【发布时间】:2020-02-21 08:22:56
【问题描述】:
我正在尝试将一系列日期分成相等的间隔。这是我正在使用的代码。 (日期格式为 YYYY-MM-dd)
Integer frequency= 4;
Date startDate = '2020-02-27';
Date endDate = '2022-02-26';
String[] startD = string.valueOf(behadelPlan.Start_datum__c).split('-');
String[] endD = string.valueOf(behadelPlan.Einddatum__c).split('-');
//String[] dates;
Integer x = 0;
Integer startYear = Integer.valueof(startD[0]);
Integer endYear = Integer.valueof(endD[0]);
//while (x < 4) {
for (Integer i = startYear; i <= endYear; i++) {
Integer endMonth = i != endYear ? 11 : Integer.valueof(endD[1]) - 1;
Integer startMon = i == startYear ? Integer.valueof(startD[1]) - 1 : 0;
for (Integer j = startMon; j <= endMonth && x < frequency; j = j + 1) {
Integer month = j + 1;
String displayMonth;
if (month < 10) {
displayMonth = '0' + month;
} else {
displayMonth = String.valueOf(month);
}
List<string> slist = new string[]{string.valueOf(i), displayMonth, '01'};
string allstring = string.join(sList,'-');
System.debug(slist);
x+=1;
}
}
当我运行它时,我得到的输出为
2020-02-01
2020-03-01
2020-04-01
2020-05-01
在我的例子中,我想以相等的(每月一次,开始日期为一天)间隔生成日期。在上面的示例中,我应该以 4 个相等的间隔获得结果日期(因为我已经给出了几个月的频率)。
请告诉我如何实现这一目标。
这是一个简单的例子。
startdate = '2020-01-01'
endDate = '2020-12-01'
frequency = 4
输出应该是
2020-01-01
2020-03-01
2020-06-01
2020-09-01
【问题讨论】:
-
你为什么把它标记为 JS?
-
对我来说不是很清楚你想要实现什么。您是否希望每年每季度进行一次转型。如果 startDate = 2018-04-06 和 endDate = 2020-10-06 会发生什么。
-
听起来不是很复杂。首先计算开始日期和结束日期之间的月数,然后除以频率,然后将结果频率时间添加到开始日期。
-
@MagdalenaFairfax,我们有一个开始日期和结束日期。和另一个数字名称频率。我基本上想根据频率(以月为单位)提取开始日期和结束日期(包括开始日期)之间的日期并打印它们。根据您的示例,我需要将开始日期和结束日期之间的日期划分为 4 个相等的间隔并打印日期。
-
@user3872094 我已经发布了一个可能的答案让我知道它是否有效