iCalendar (RFC 5545)中的RECURRENCE-ID

4

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

假设一个日历组件包含一个称为“会议”的循环事件,该事件将于2012年8月6日开始每个星期一上午10点至中午12点安排。重复结束时间应为2012年10月29日。 “会议”被重新安排为从2012年9月3日起每个星期一下午12点至3点,并将RANGE设置为THISANDFUTURE,以表示所有后续事件也将从下午12点至3点安排。 到2012年10月1日,“会议”还将再次被重新安排为每个星期二上午10点至下午1点,同样使用RANGE设置为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可能无法更改或重新安排。这意味着rrule在子事件中也将保持不变。最后一个事件从2012年10月29日10点到12点安排,但被第三个事件重新安排到第二天的10点。这最后一个事件是否在日历组件的重复集中,或者UNTIL值必须在所有事件中更改,以便包括10月30日的10点?
提前感谢! :-)
1个回答

4

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

如果可以的话,最好按照RFC5545 § 3.8.4.4中的注释进行互操作,这样可能更容易/更安全。

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


抱歉回复晚了,因为邮件通知出了问题。感谢您的帖子,它帮了我很多。我会仔细阅读提到的章节,如果问题真的得到解决,我会标记为已解决。 :-) - mrwerner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接