计算重复活动日期的谷歌问题

时间:2013-06-06 08:57:05

标签: icalendar rfc2445 rfc5545

以下事件引发了这个问题。

BEGIN:VEVENT
UID:483b7d72-7412-4aca-92f1-b7bf427a9c5a
RRULE:FREQ=DAILY;COUNT=3;INTERVAL=1;BYDAY=MO,TU,WE,TH,FR
SUMMARY:tes
DTSTART;TZID="Asia/Tokyo":20131215T000000
DTEND;TZID="Asia/Tokyo":20131215T003000
STATUS:CONFIRMED
CLASS:PUBLIC
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
TRANSP:OPAQUE
X-MICROSOFT-DISALLOW-COUNTER:TRUE
DTSTAMP:20130606T064916Z
SEQUENCE:2
END:VEVENT

对于此事件,谷歌图书馆(rfc2445-4Mar2011.jar)返回4天重复。

输出日期为20131215T000000,20131216T000000,20131217T000000,20131218T000000

但我将此事件的rrule计数设为3。即便如此,我有4个重复的日子。

请帮我解决这个问题。

3 个答案:

答案 0 :(得分:1)

这确实是库中的一个错误

rfc2445§3.1.10

  

COUNT规则部分定义了对重复范围进行范围限制的出现次数。 “DTSTART”属性值(如果指定)将计为第一次出现。

甚至取代它的rfc5545也表示§3.3.10

  

COUNT规则部分定义了对重复范围进行范围限制的出现次数。 “DTSTART”属性值始终计为第一次出现。

从中可以清楚地看出,复发清单将是:

20131215T000000,20131216T000000,20131217T000000

答案 1 :(得分:0)

只能确认这是您图书馆中的错误。为了它的价值,ical4j正确地扩展了这个RRULE。

答案 2 :(得分:0)

您的DTSTART不适合您的RRULE:DTSTART是星期日,但您的RRULE将日期限制为星期一 - >星期五。鉴于此,我怀疑不同的代码库会以不同的方式解释这一点。您应该强烈考虑更改您的活动,以使其更具标准性。