iCal 复杂的重复事件似乎无法正常工作

iCal complex recurring event doesn't seem to be working properly

我有一个生成 ics 文件的脚本,有些事件往往具有复杂的重复规则 (i.e. every Monday between date1 and date2 except on holiday1 or holiday2 but also occurs once on randomDate1)

根据我对 here 定义的规范的理解,将其表示为 RRULE、RDATE 和 EXDATE

的混合似乎很简单

正如您在下面看到的 My Complex Event

但是,一旦我在 MS Outlook 2016 中打开此文件,我就会在 RRULE 指定的日期看到该事件,但我没有在 EXDATE 指定的日期看到它(没关系),但我没有在 RDATE 指定的日期看到它(不行)

我已经验证了我的 ical here 并且没有发现任何错误。所以我想知道: 这是 Outlook 错误吗?我应该对 ical 属性使用某种顺序吗?

我也尝试将其导入 Google 日历,但我没有看到定义在 4 月 13 日星期三的事件,而是在 4 月 12 日星期二看到的。RRULE 和 EXDATE 也按预期工作。

有什么想法吗?

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//dkhalife//NONSGML Dany v2.0//FR
METHOD:PUBLISH
X-WR-CALNAME:Dany
CALSCALE:GREGORIAN
BEGIN:VTIMEZONE
TZID:America/Montreal
BEGIN:DAYLIGHT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
DTSTART:19700308T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:EST
DTSTART:19701101T020000
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
CATEGORIES:Cours
SUMMARY:My Complex Event
LOCATION:Location Location Location
DTSTART;TZID=America/Montreal:20160111T124500
DTEND;TZID=America/Montreal:20160111T143500
RRULE:FREQ=WEEKLY;INTERVAL=1;UNTIL=20160415
RDATE;VALUE=DATE:20160413
EXDATE;VALUE=DATE:20160125
UID:xxxx
END:VEVENT
END:VCALENDAR

您的活动有时间,但 RDATEEXDATE 值是全天的,这没有意义(几年前我在回应 bug in KOrganizer) 并且在 IMO 中是无效的(即使 RFC 5545 没有明确说明)。

尝试替换

RDATE;VALUE=DATE:20160413
EXDATE;VALUE=DATE:20160125

来自

RDATE;TZID=America/Montreal:20160413T124500
EXDATE;TZID=America/Montreal:20160125T124500

顺便说一句。如果您的事件锚定在任何时区(这在 RFC 5545 中明确指定),则必须在 UTC 时间指定的 UNTIL 子句也是如此。

所以你的 RRULE 应该是这样的:

RRULE:FREQ=WEEKLY;INTERVAL=1;UNTIL=20160415T164500Z