Hi Guys, I have few questions regarding details of recurrence rules of rfc 2445. (Sorry if I may sound more clueless than I really am. I have my assumptions, but I don't want to influence any answers by bringing too much of my own arguments and thoughts). 1) About the BYDAY rule part: Let's start with some examples RRULE:FREQ=YEARLY;BYDAY=3SU Okay, that's the third sunday of the year. But what exactly is RRULE:FREQ=YEARLY;BYDAY=5SU;BYMONTH=2 Is this the fith sunday in the year, if it is also in february? Or is it the fifth sunday in february? And it can be even less clear from rfc 2445. What is RRULE:FREQ=YEARLY;BYDAY=5SU;BYMONTH=2,7 Is this the fifth sunday of the year, if it's in either February or July? Or is it the fifth sunday of both february and July? Or is it the fifth sunday of febrary and july together (i.e. in feb if the feb in a leap year has 5 sundays, or the first sunday of july in all other years)? If you think it's the latter, think about the following rule: RRULE:FREQ=YEARLY;BYWEEKNO=4;BYDAY=5SU Is it the fifth sunday of all sundays that are in week #4? Or is it the fifth sunday of the year if it is also in week #4? Also, what does this rule mean: RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU;BYYEARDAY=72 I suppose it doesn't mean the 72th day of the year, if that's the 2nd sunday in March. Is there any way to express that recurrence in an RRULE? Also notice that rfc 2445 says "For example, within a MONTHLY rule, +1MO (or simply 1MO) represents the first Monday within the month, whereas -1MO represents the last Monday of the month. ". So what does RRULE:FREQ=MONTHLY;BYYEARDAY=57,64;BYDAY=-1MO mean? The last monday of each month if it's also day #57 or #64 of the year (which the quote implies), or the last monday each month in the set of all days #57 and #64 of the year. In particular, in 2007, would the recurrence set be Feb 27 (=#57 of the year, and the last monday in february) without any occurence in march (march 5 is day #64, but it's not the last monday in the month, since rfc 2445 says -1MO means last monday of the month)? Or would it be Feb 27 (day #57 of the year, and last monday of all dates that match the BYYEARDAY in the february interval) and March 4 ( day #64 of the year and last monday of all dates in March that match the BYYEARDAY). 2) In Section 4.3.10 RFC 2445 says "The COUNT rule part defines the number of occurrences at which to range-bound the recurrence. The "DTSTART" property value, if specified, counts as the first occurrence.". So look at this rrule: DTSTART;TZID=whatever:20050530T120000 RRULE:FREQ=WEEKLY;COUNT=3;BYMONTH=6 The resulting recurrence dates would be 1) 20050530 2) 20050630 3) 20060630 Now if the DTSTART is not specified the quote from above would imply that the start doesn't count as a recurrence, so looking at DTEND;TZID=whatever:20050530T150000 DURATION:PT3H RRULE:FREQ=WEEKLY;COUNT=3;BYMONTH=6 would give the following resulting recurrence dates? 1) 20050530 (DTSTART is always the first occurence, ) 2) 20050630 3) 20060630 4) 20070630 (DTSTART doesn't count towards COUNT) 3) About the DTSTART and recurrence rules: Is the DTSTART always taken to match the rule (even if it doesn't fulfil the BY* parts)? In particular this is important for EXRULES: Is the DTSTART always the first occurence of the EXRULE? If that's the case, the DTSTART will always be excluded as soon as at least one EXRULE is present. And since exceptions overrule inclusions, there's no way to have an occurence on the DTSTART in that case... Is this really the intended behaviour? Thanks a lot already for your clarifications / discussions. Cheers, Reinhold -- ------------------------------------------------------------------ Reinhold Kainhofer, Vienna University of Technology, Austria email: reinhold@xxxxxxxxxxxxx, http://reinhold.kainhofer.com/ * Financial and Actuarial Mathematics, TU Wien, http://www.fam.tuwien.ac.at/ * K Desktop Environment, http://www.kde.org, KOrganizer / KPilot maintainer
Attachment:
pgp00002.pgp
Description: PGP signature