[Ietf-calsify] FREQ=MONTHLY when DTSTART = 29/30/31st.

George Sexton gsexton at mhsoftware.com
Mon Feb 19 20:19:33 PST 2007



Nigel Swinson wrote:
> Please could you confirm to me that the following does not include the 
> 15th of February:
>  
> DTSTART;VALUE=DATE:20070130
> RRULE:FREQ=MONTHLY;BYMONTHDAY=15,30
No. This would include the 15th of February only. Why do you think it 
would not apply to February? The FREQ is monthly, and February is a 
month too.
>  
> Nor does this include any date in February:
>  
> DTSTART;VALUE=DATE:20070130
> RRULE:FREQ=MONTHLY;BYMONTHDAY=1,-1
No, this would include the 1st of February, and the  28th (or 29th for 
leap years).
>  
> Whereas these would:
>
> DTSTART;VALUE=DATE:20070115
> RRULE:FREQ=MONTHLY;BYMONTHDAY=15,30
> EXDATE:20070115
Agan, this is the 15th of February only.
>  
> DTSTART;VALUE=DATE:20070130
> RRULE:FREQ=DAILY;BYMONTHDAY=15,30
This also would include only the 15th of February.
>  
>  
> I don't find the above particularly obvious, so in case it helps, my 
> thinking is that you use DTSTART and FREQ to create the initial 
> recurrence set, and then refine/expand it using the BYXXX rules.  As 
> there is no 30th of Feb, the initial recurrence set contains no dates 
> in February, and hence we have no date in february to expand or refine 
> to create additional dates in february in the context of a monthly rule.
>  
> If I am right, and you also consider the above not particularly 
> obvious, perhaps it worth refining this paragraph in RFC2445 to spell 
> out the algorithm.  I suggest we move the "invalid date" paragraph 
> down one, and then:
>  
> http://tools.ietf.org/html/draft-ietf-calsify-rfc2445bis-05#section-3.3.10
>  
>       Information, not contained in the rule, necessary to determine the
>       various recurrence instance start time and dates are derived from
>       the Start Time ("DTSTART") component attribute.  For example,
>       "FREQ=YEARLY;BYMONTH=1" doesn't specify a specific day within the
>       month or a time.  This information would be the same as what is
>       specified for "DTSTART".
>  
>       Recurrence rules may generate recurrence instances with invalid
>       date (e.g., February 30) or nonexistent local time (e.g., 1:30 AM
>       on a day where the local time is moved forward by an hour at 1:00
>       AM).  Such recurrence instances MUST be ignored and MUST NOT be
>       counted as part of the recurrence set.
> +    Should the combination of DTSTART and FREQ itself create
> +    recurrences that lie on non existant dates, then you end up skipping
> +    entire intervals.  For example "DTSTART;VALUE=DATE:20070130" with
> +    "FREQ=MONTHLY" will never contain any instances in February 
> regardless
> +    of what BYXXX rule parts are specified.
>  
>       If multiple BYxxx rule parts are specified, then after evaluating
>       the specified FREQ and INTERVAL rule parts, the BYxxx rule parts
>       are applied to the current set of evaluated occurrences in the
>       following order: BYMONTH, BYWEEKNO, BYYEARDAY, BYMONTHDAY, BYDAY,
>       BYHOUR, BYMINUTE, BYSECOND and BYSETPOS; then COUNT and UNTIL are
>       evaluated.
> Cheers
>  
> Nigel
> ------------------------------------------------------------------------
>
> _______________________________________________
> Ietf-calsify mailing list
> Ietf-calsify at osafoundation.org
> http://lists.osafoundation.org/mailman/listinfo/ietf-calsify
>   

-- 
George Sexton
MH Software, Inc.
Voice: +1 303 438 9585
URL:   http://www.mhsoftware.com/



More information about the Ietf-calsify mailing list