Comment 3 for bug 80161

Revision history for this message
Marius Gedminas (mgedmin) wrote :

The iCalendar spec (RFC 2445) is difficult to understand. It says

   Property Name: DTEND

   Description: [...] The value MUST be
   later in time than the value of the "DTSTART" property.

It also says

   The "VEVENT" is also the calendar component used to specify an
   anniversary or daily reminder within a calendar. These events have a
   DATE value type for the "DTSTART" property instead of the default
   data type of DATE-TIME. If such a "VEVENT" has a "DTEND" property, it
   MUST be specified as a DATE value also. The anniversary type of
   "VEVENT" can span more than one date (i.e, "DTEND" property value is
   set to a calendar date after the "DTSTART" property value).

   The "DTSTART" property for a "VEVENT" specifies the inclusive start
   of the event. For recurring events, it also specifies the very first
   instance in the recurrence set. The "DTEND" property for a "VEVENT"
   calendar component specifies the non-inclusive end of the event. For
   cases where a "VEVENT" calendar component specifies a "DTSTART"
   property with a DATE data type but no "DTEND" property, the events
   non-inclusive end is the end of the calendar date specified by the
   "DTSTART" property. For cases where a "VEVENT" calendar component
   specifies a "DTSTART" property with a DATE-TIME data type but no
   "DTEND" property, the event ends on the same calendar date and time
   of day specified by the "DTSTART" property.

Here's another interesting excerpt:

   2. A calendar entry with a "DTSTART" property but no "DTEND"
       property does not take up any time. It is intended to represent
       an event that is associated with a given calendar date and time
       of day, such as an anniversary. Since the event does not take up
       any time, it MUST NOT be used to record busy time no matter what
       the value for the "TRANSP" property.

Here's my interpretation:

  * An event that has DTSTART but no DTEND/DURATION properties is an all-day
event (that shouldn't influence free/busy time)

  * If an event has both DTSTART and DTEND (both with DATE values), then DTEND
must be greater than DTSTART

I do not understand if DTEND is inclusive or exclusive. For example, if I have
an event like

  DTSTART;VALUE=DATE:20060325
  DTEND;VALUE=DATE:20060327

should the event be displayed on Mar 25, Mar 26, Mar 27 or should it only be
displayed on Mar 25 and Mar 26?