4

我对 iCalendar 规范 RFC 5545 中的 Property RECURRENCE-ID 和此属性中的 RANGE 参数有点困惑。

假设日历组件包含一个称为“会议”的重复事件,该事件应安排在 2012 年 8 月 6 日开始的每个星期一的 10 点至 12 点。重复结束应为 2012 年 10 月 29 日。“会议”重新安排为 12 至 15 日2012 年 9 月 3 日之前的每个星期一,将 RANGE 设置为 THISANDFUTURE 以表明所有后续活动也将安排在 12 点到 15 点之间。到 2012 年 10 月 1 日,“会议”将重新安排在每个星期二(而不是星期一)的 10 点到 13 点,范围也设置为 THISANDFUTURE。此外,2012 年 9 月 17 日的单项赛事将重新安排在 8 点至 10 点。

iCalendar 格式的事件将如下所示:

BEGIN:VCALENDAR
...
BEGIN:VEVENT
DTSTART:20120806T100000Z
DTEND:20120806T120000Z
UID:atgbutj8md5v35fuguni1of4b9o@google.com
SEQUENCE:1
SUMMARY:Meeting
RRULE:FREQ=WEEKLY;UNTIL=20121029T100000Z
END:VEVENT
BEGIN:VEVENT
DTSTART:20120903T120000Z
DTEND:20120903T150000Z
UID:atgbutj8md5v35fuguni1of4b9o@google.com
SEQUENCE:1
SUMMARY:Meeting
RRULE:FREQ=WEEKLY;UNTIL=20121029T100000Z
RECURRENCE-ID;RANGE=THISANDFUTURE:20120903T100000Z
END:VEVENT
BEGIN:VEVENT
DTSTART:20121002T100000Z
DTEND:20121002T130000Z
UID:atgbutj8md5v35fuguni1of4b9o@google.com
SEQUENCE:1
SUMMARY:Meeting
RRULE:FREQ=WEEKLY;UNTIL=20121029T100000Z
RECURRENCE-ID;RANGE=THISANDFUTURE:20121001T100000Z or 20121002T120000Z???????????
END:VEVENT
BEGIN:VEVENT
DTSTART:20120917T080000Z
DTEND:20120917T100000Z
UID:atgbutj8md5v35fuguni1of4b9o@google.com
SEQUENCE:1
SUMMARY:Meeting
RRULE:FREQ=WEEKLY;UNTIL=20121029T100000Z
RECURRENCE-ID:20120917T100000Z or 20120917T120000Z?????????
END:VEVENT
END:VCALENDAR

我不确定的值是 RECURRENCE-ID 和 RRULES 的值。

-) 第三个和第四个事件应该使用哪个日期?他们应该参考主要事件(第一个事件)还是第二个事件,因为这是重新安排的“最近”事件?

-) 如果我对 RFC5545 的解释是正确的,则 RRULE 可能不会更改或重新安排。这意味着规则在子事件中也是相同的。最后一场活动会发生什么,原定于 2012 年 10 月 29 日 10 点至 12 点举行,但第三场活动改期至次日 10 点。这是日历组件的重复集中的最后一个事件,还是在所有事件中都更改 UNTIL 值以便包括 10 月 30 日 10 点?

提前致谢!:-)

4

1 回答 1

4

使用 THISANDFUTURE 和互操作性重新安排的困难已在calconnect interop oct 2010中记录。

如果可以的话,interop 可能更容易/更安全地遵循 RFC5545 § 3.8.4.4 中的注释。

“RANGE”参数可能不适合重新安排特定的后续实例 [...]。在这种情况下,日历应用程序可以简单地截断无限循环日历组件(即,使用“COUNT”或“UNTIL”规则部分),并为未来实例创建两个新的无限循环日历组件。

于 2012-07-18T04:47:33.907 回答