使用google-rfc-2445 createDateTimeIterator生成日期范围时,结束日期(UNTIL)被排除在外

问题描述 投票:0回答:1

我需要知道如何避免在此创建的日期范围内排除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
java icalendar rfc2445
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必须匹配。

© www.soinside.com 2019 - 2024. All rights reserved.