在iCalendar RFC 5545, section 3.3.10中,我看到以下 UNTIL 参数描述:
UNTIL 规则部分的值必须与“DTSTART”属性具有相同的值类型。此外,如果“DTSTART”属性被指定为带有本地时间的日期,那么 UNTIL 规则部分也必须被指定为带有本地时间的日期。如果“DTSTART”属性指定为带有 UTC 时间的日期或带有本地时间和时区参考的日期,则 UNTIL 规则部分必须指定为带有 UTC 时间的日期。
但是,在3.8.5.3 Recurrence Rule段落中,UNTIL 始终以 UTC 指定,与 DTSTART 属性无关:
DTSTART;TZID=America/New_York:19970902T090000
RRULE:FREQ=DAILY;UNTIL=19971224T000000Z
DTSTART;TZID=America/New_York:19970902T090000
RRULE:FREQ=WEEKLY;UNTIL=19971007T000000Z;WKST=SU;BYDAY=TU,TH
总共有5个这样的例子。
我还发现,无论 DTSTART 属性如何,至少有 2 个 CalDAV 客户端(iOS 和 Mozilla Lightning)总是以 UTC 格式提交 UNTIL 参数。
UNTIL 必须始终使用 UTC 的唯一位置是 VTIMEZONE 中的 RRULE。还是我没有得到什么?