[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

DTSTART for recurrence instances



In the thread "Re: list of items (recur-id is not CAP)",
Doug wrote (on 11/25/03):
 
> When expanding an existing recurring object, you do not
> modify the DTSTART value...
(i.e. the DTSTART value of a recurrance instance is the
DTSTART value of the recurrence 'master'.)
 
Unless I have misunderstood, this seems contrary to common
practice.  Some clarification regarding DTSTART value for
recurrence instances would be helpful.
 
Suppose we have a recurring event for every Monday in January:
 
BEGIN:VEVENT
SUMMARY:Every Monday in January
DTSTART:20040105T100000Z
DTEND:20040105T110000Z
UID:A-Unique-ID
RRULE:FREQ=WEEKLY;UNTIL=20040131T170000Z;
 INTERVAL=1;BYDAY=MO;WKST=SU
...
END:VEVENT
 
Now suppose we SEARCH for that event with Expand:TRUE:
 
BEGIN:VQUERY
EXPAND:TRUE
QUERY: SELECT * from VEVENT
  WHERE UID = 'A-Unique-ID'
END:VQUERY
 
What will be returned in the query?  Will the DTSTART
(and DTEND) of each recurrence instance be the same as
the 'master' (as in column 1 below)?  Or will DTSTART and
DTEND have the 'effective' value for the recurrence instance
(as in column 2 below)?  Note: The first instance in each
column is the same; subsequent instances begin to differ.
 
For each instance -              For each instance -
DTSTART is same as the master    DTSTART has 'effective' value
(DTSTART not modified).          for the recurrence instance.
—-----------------------------   —-----------------------------
BEGIN:VEVENT                     BEGIN:VEVENT
DTSTART:      20040105T100000Z   DTSTART:      20040105T100000Z
DTEND:        20040105T110000Z   DTEND:        20040105T110000Z
RECURRENCE-ID:20040105T100000Z   RECURRENCE-ID:20040105T100000Z
...                              ...
BEGIN:VEVENT                     BEGIN:VEVENT
DTSTART:      20040105T100000Z   DTSTART:      20040112T100000Z
DTEND:        20040105T110000Z   DTEND:        20040112T110000Z
RECURRENCE-ID:20040112T100000Z   RECURRENCE-ID:20040112T100000Z
...                              ...
BEGIN:VEVENT                     BEGIN:VEVENT
DTSTART:      20040105T100000Z   DTSTART:      20040119T100000Z
DTEND:        20040105T110000Z   DTEND:        20040119T110000Z
RECURRENCE-ID:20040119T100000Z   RECURRENCE-ID:20040119T100000Z
...                              ...
BEGIN:VEVENT                     BEGIN:VEVENT
DTSTART:      20040105T100000Z   DTSTART:      20040126T100000Z
DTEND:        20040105T110000Z   DTEND:        20040126T110000Z
RECURRENCE-ID:20040126T100000Z   RECURRENCE-ID:20040126T100000Z
...                              ...
 
The expected result, intuitively and instinctively, is Column 2.
The prior discussion thread implied that Column 1 is correct
(along with some discussion explaining that this is why DTSTART
is not always suitable for use in QUERYs, whereas RECURRENCE-ID
is more suitable).
 
This is a fundamental issue that impacts interoperability. 
I'd like to hear others view on this issue:
What is the value of DTSTART for recurrence instances?
  - DTSTART is the same as the 'master'.
  - DTSTART is the 'effective' value for the instance.
 
Thanks.
Craig J.