2012-07-12 107 views
2

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

假设一个包含名为“会议”的循环事件的日历组件,该会议将于2012年8月6日开始的每个星期一10-12点安排。重复结束日期为2012年10月29日。 “会议”将于2012年9月3日每周一的12点至15点重新安排,范围设置为THISANDFUTURE,以确定所有后续活动的时间安排在12点至15点。 到2012年10月1日,“会议”将在每周二(而不是周一)的10点至13点再次重新安排,范围设置为THISANDFUTURE。 此外,2012年9月17日的单项活动将从8点改变为10点。

以iCalendar格式的本次活动将是这样的:

BEGIN:VCALENDAR 
... 
BEGIN:VEVENT 
DTSTART:20120806T100000Z 
DTEND:20120806T120000Z 
UID:[email protected] 
SEQUENCE:1 
SUMMARY:Meeting 
RRULE:FREQ=WEEKLY;UNTIL=20121029T100000Z 
END:VEVENT 
BEGIN:VEVENT 
DTSTART:20120903T120000Z 
DTEND:20120903T150000Z 
UID:[email protected] 
SEQUENCE:1 
SUMMARY:Meeting 
RRULE:FREQ=WEEKLY;UNTIL=20121029T100000Z 
RECURRENCE-ID;RANGE=THISANDFUTURE:20120903T100000Z 
END:VEVENT 
BEGIN:VEVENT 
DTSTART:20121002T100000Z 
DTEND:20121002T130000Z 
UID:[email protected] 
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:[email protected] 
SEQUENCE:1 
SUMMARY:Meeting 
RRULE:FREQ=WEEKLY;UNTIL=20121029T100000Z 
RECURRENCE-ID:20120917T100000Z or 20120917T120000Z????????? 
END:VEVENT 
END:VCALENDAR 

我不能确定的值是复发ID和RRULES的值。

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

- )如果我对RFC5545的解释是正确的,则RRULE可能不会更改或重新安排。这意味着在子事件中,rrule也是相同的。最后一场比赛将于2012年10月29日10时至12时举行,但第三场比赛将重新安排到第二天的下午10点。这是日历组件重复集合中的最后一个事件,还是在所有事件中都要更改UNTIL值,以便10月30日10点包括在内?

在此先感谢! :-)

回答

4

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

如果可以的话,它可能会更容易/更安全地进行互操作,以遵循RFC5545第3.8.4.4节中的注释。

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

+0

对不起,我迟到的答案,但电子邮件通知没有任何原因工作。感谢您的发布。它帮助了很多。我将通读上述章节,如果事实证明这个问题真的解决了,我会将问题标记出来。 :-) – mrwerner 2012-09-06 20:12:31