我需要知道如何避免在此创建的日期范围内排除UNTIL或结束日期-https://stackoverflow.com/a/27628608/5311573
请帮助。
我正在尝试使用上面链接中给出的答案来获取日期范围,但每次都不包括结束日期。
StartDate = 2020-04-21T00:00:00.000+05:30;
RRULE:FREQ=DAILY;INTERVAL=1;UNTIL=20200428
它将返回我以下结果:
2020-04-20T18:30:00.000Z
2020-04-21T18:30:00.000Z
2020-04-22T18:30:00.000Z
2020-04-23T18:30:00.000Z
2020-04-24T18:30:00.000Z
2020-04-25T18:30:00.000Z
2020-04-26T18:30:00.000Z
2020-04-27T18:30:00.000Z
您的开始日期和时间似乎是2020-04-20T18:30:00.000Z尽管上面有您的伪代码。因为这就是您列出的结果:重复发生于18.30。
在这些时间每天重复发生,2020-04-28T18:30:00.000Z将在2020-04-20T00:00:000Z之后。
因此,使开始日期或日期时间与结束日期或日期时间保持一致。从https://icalendar.org/iCalendar-RFC-5545/3-3-10-recurrence-rule.html中说:
UNTIL规则部分定义了一个DATE或DATE-TIME值,该值限制了包含规则的重复规则。如果指定的值UNTIL与指定的重复发生时间(此DATE或DATE-TIME成为重复发生的最后一个实例。的价值UNTIL规则部分必须具有与“ DTSTART”相同的值类型属性。此外,如果将“ DTSTART”属性指定为日期与当地时间,那么还必须指定UNTIL规则部分作为当地时间的日期。如果将“ DTSTART”属性指定为具有UTC时间的日期或具有本地时间和时区参考的日期,然后必须将UNTIL规则部分指定为带有UTC时间的日期。
如果要使用UTC时间,则将UNTIL更改为2020-04-28T18:30:00.000Z或2020-04-28T18:30:00.000(如果打算使用浮动时间)。基本上DTSTART和UNTIL必须匹配。