Subject: Corner cases of DTEND semantics with RECUR

From: Jonathan Lennox <[email-masked]>
Date: Mon, 21 May 2001 11:27:53 -0400 (EDT)

I have a question about the semantics of DTEND with RECUR:

   Any duration associated with the iCalendar object applies to all
   members of the generated recurrence set.

Can I interpret this to mean that, if a recurring VEVENT has its end
specified with DTEND, I'm always safe to consider its duration to be the
number of seconds between the given DTSTART and DTEND?

Thus, for instance:

DTSTART;TZID=America/New_York:19970902T003000
DTEND;TZID=America/New_York:19970902T023000
RRULE:FREQ=DAILY

is a two-hour (7200 second) daily event.  It normally ends at 2:30 AM, but
on October 26, 1997, it ends at 1:30 AM EST (the second occurence of 1:30),
and on April 5, 1998, it ends at 3:30 AM EDT.

The obvious alternative would be to say that DTEND rules always carry over
their actual time-of-day.  However, this breaks down once you have sub-day
BYxxx rules: 

DTSTART;TZID=America/New_York:19970902T083000
DTEND;TZID=America/New_York:19970902T103000
RRULE:FREQ=DAILY;BYHOUR=0,8,16

This rule also generates an event which starts at 1997-10-26 00:30:00, just
like the previous one.  When would it end?  How would you calculate it?

I'd consider this to be a difference between DTEND and DURATION.  If you say
"DURATION:PT2H", it always means "add 2 to the hour field of the calendar".
(Though this is probably also controversial...)

Agreement/disagreement?  Should new wording be added to 2445bis to clarify
this?

-- 
Jonathan Lennox
[email-masked]