0

我需要知道如何避免 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
4

1 回答 1

0

尽管上面有伪代码,但您的开始日期和时间似乎是 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 必须匹配。

于 2020-04-12T03:25:33.410 回答