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
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 VALUE=DATE: 20060327
DTEND;
should the event be displayed on Mar 25, Mar 26, Mar 27 or should it only be
displayed on Mar 25 and Mar 26?