innerjoin |
|
| innerjoin | iCalendar | |
Need to set up an 'all-day' event and/or an 'event on a day'
in iCalendar .ics files? Confused that the Mozilla or Firefox
calendar extension or
Sunbird
treats these as the same?
These notes were originally written round Calendar 0.8 with Mozilla 1.1, September 2002
They were revisited and revised to bring them up to date for Sunbird 0.2, the stand-alone Calendar release of January 2005
The details in an .ics file for an event from 20:00 to 21:00 is clear, the event has a start time and an end time:
DTSTART:20020922T200000
DTEND:20020922T210000
If you specify the start time and no end time, iCalendar treats the event as happening on an 'instant', it has no duration but happens at that given time:
DTSTART:20020922T200000
Similarly what about the things which will happen on the day but which you don't know the time yet?
Calendars have to be able to convey all these meanings.
Applying the logic of an event to a date, an 'all day' event is flagged as starting at the beginning of one day and lasting until the beginning of the next:
DTSTART;VALUE=DATE:20020923
DTEND;VALUE=DATE:20020924
DTSTART:20020923T000000
DTEND:20020924T000000
Try subscribing to a test all day event. The same data downloadable with a text/plain MIME type (so you can read it) is here.
An 'event on a day', such as anniversaries and birthdays as described in the RFC, is specified with a DTSTART without a DTEND:
DTSTART;VALUE=DATE:20020922
Sunbird, as of version 0.2, presents 'events on a day' in the same fashion as 'all day' events.
Compare the presentation of an 'on the day' event [text/plain] and an 'all day' event [text/plain]
See the discussion with respect to Chandler about importing/exporting iCal.
This markup may also be appropriate for 'dates where you don't know the times', for example that you know it is on the 22nd September, but not when on the 22nd of September. This usage however does not appear in the RFC and the VEVENT definition says that in this case there is an implicit DTEND.
TODO: Bring this section and the test cases up to date
These events with just a 'start time' and no duration are treated as TRANSPARENT and therefore not interfering with the 'free busy' information maintained by the calendar.
For example, that the day is an anniversary does not, by itself, mean that you cannot book anything else on it, a recipe for disaster. Similarly, if you have noted a concert happening on a date far in the future, you also better not let your calendar think you are busy for the whole day just because you don't know whether the gig is at 20:00 or 21:00. This is what 'transparent' status does.
See: RFC 2445, Section 4.8.2.7 TRANSP
Sunbird 0.2 does not implement TRANSP. Compare the transparent 'on the day' event [text/plain] in comparison to the straight 'on the day' event [text/plain]
Events on a day are treated as transparent, equivalent to having
TRANSP:TRANSPARENT