icalendar-implementations: Difference between revisions

From Microformats Wiki
Jump to navigation Jump to search
m (Reverted edits by VarroLbocc (Talk) to last version by Brian)
(noted some Apple iCal 2.0.5 testing results and thus implications for hCalendar processors that generate iCalendar. noted need to document more thoroughly in hcalendar-parsing page.)
Line 15: Line 15:
* platform: OSX
* platform: OSX
* handles "webcal:" URLs and supports subscribing to events.
* handles "webcal:" URLs and supports subscribing to events.
==== Apple iCal 2.0.5 ====
Apple iCal.app 2.0.5 build 1069 (AppleiCal205)
===== AppleiCal205 notes =====
* '''Requires dates and date-times without separators.''' Apple iCal 2.0.5 (and probably other versions) appears to require dates without "-" and times without ":" which appears to be consistent with the iCalendar spec due to:
** iCalendar section 4.3.4 Date - "date-value        = date-fullyear date-month date-mday" (no separators)
** iCalendar section 4.3.12 Time - "time              = time-hour time-minute time-second [time-utc]" (no separators)
As a result Apple iCal 2.0.5 ignores date and date-time properties (e.g. DTSTART, DTEND, etc.) when date components (year, month, day) are separated by "-" or when time components (hours, minutes, seconds) are separated by ":" (both as allowed by [[ISO8601]] and required by [[RFC3339]]).
However per [[accessibility]] research, dates and times with separators are more readable and accessible, and consequently explicitly allowed by hCalendar.
Thus hCalendar processors which generate iCalendar files MUST handle parsing hCalendar date and date-time properties (e.g. DTSTART, DTEND, etc.) with separators, and remove separators when converting to iCalendar.
* '''Requires date-times with seconds explicitly specified.''' Apple iCal 2.0.5 (and probably other versions) appears to require date-times with the seconds explicitly specified, which appears to be consistent with the iCalendar spec:
** iCalendar section 4.3.12 Time - "time              = time-hour time-minute time-second [time-utc]" (no separators)
However in practice (see [[hcalendar-examples-in-wild]]) hCalendar date-time properties often omit the seconds because when they are "00" for simplicity and easier/quicker readability.
Thus hCalendar processors which generate iCalendar files MUST handle parsing hCalendar date-time properties (e.g. DTSTART, DTEND, etc.) without the seconds explicitly specified, and imply "00" seconds when converting to iCalendar.
* '''Requires floating or UTC date-times.''' Apple iCal 2.0.5 (and probably other versions) appears to require date-times which are either floating (no time zone) or explicitly specified to be UTC and ignores date-times which use timezone offsets, which appears to be consistent with the iCalendar spec:
** iCalendar section 4.3.12 Time - "time              = time-hour time-minute time-second [time-utc]" (no separators) and: <blockquote><p>The form of time with UTC offset MUST NOT be used. For example, the following is NOT VALID for a time value:</p><pre>230000-0800        ;Invalid time format</pre></blockquote>
However, in practice  (see [[hcalendar-examples-in-wild]]) hCalendar date-time properties often state the timezone offset in order to make the human visible time consistent with the machine readable time for easier verification (minimize DRY divergence probability).
Thus hCalendar processors  which generate iCalendar files MUST handle parsing hCalendar date-time properties (e.g. DTSTART, DTEND, etc.) with an explicit timezone offset, and convert the specified date-time value to a UTC value when converting to iCalendar.
All hCalendar processor requirements above should be documented thoroughly in [[hcalendar-parsing]].


=== KOrganizer ===
=== KOrganizer ===

Revision as of 02:22, 25 June 2009

iCalendar implementations

This is a list of calendar programs, applications and services that support the iCalendar RFC2445 standard.

In addition, please note any quirks or bugs with implementations' handling of iCalendar - we've already discovered some in the development of hCalendar and proxies like X2V.

services

Google Calendar

http://calendar.google.com/

  • supports subscribing to "webcal:" and "http:" URLs to iCalendar

products

Apple iCal

Apple iCal application aka iCal.app.

  • platform: OSX
  • handles "webcal:" URLs and supports subscribing to events.

Apple iCal 2.0.5

Apple iCal.app 2.0.5 build 1069 (AppleiCal205)

AppleiCal205 notes
  • Requires dates and date-times without separators. Apple iCal 2.0.5 (and probably other versions) appears to require dates without "-" and times without ":" which appears to be consistent with the iCalendar spec due to:
    • iCalendar section 4.3.4 Date - "date-value = date-fullyear date-month date-mday" (no separators)
    • iCalendar section 4.3.12 Time - "time = time-hour time-minute time-second [time-utc]" (no separators)

As a result Apple iCal 2.0.5 ignores date and date-time properties (e.g. DTSTART, DTEND, etc.) when date components (year, month, day) are separated by "-" or when time components (hours, minutes, seconds) are separated by ":" (both as allowed by ISO8601 and required by RFC3339).

However per accessibility research, dates and times with separators are more readable and accessible, and consequently explicitly allowed by hCalendar.

Thus hCalendar processors which generate iCalendar files MUST handle parsing hCalendar date and date-time properties (e.g. DTSTART, DTEND, etc.) with separators, and remove separators when converting to iCalendar.

  • Requires date-times with seconds explicitly specified. Apple iCal 2.0.5 (and probably other versions) appears to require date-times with the seconds explicitly specified, which appears to be consistent with the iCalendar spec:
    • iCalendar section 4.3.12 Time - "time = time-hour time-minute time-second [time-utc]" (no separators)

However in practice (see hcalendar-examples-in-wild) hCalendar date-time properties often omit the seconds because when they are "00" for simplicity and easier/quicker readability.

Thus hCalendar processors which generate iCalendar files MUST handle parsing hCalendar date-time properties (e.g. DTSTART, DTEND, etc.) without the seconds explicitly specified, and imply "00" seconds when converting to iCalendar.

  • Requires floating or UTC date-times. Apple iCal 2.0.5 (and probably other versions) appears to require date-times which are either floating (no time zone) or explicitly specified to be UTC and ignores date-times which use timezone offsets, which appears to be consistent with the iCalendar spec:
    • iCalendar section 4.3.12 Time - "time = time-hour time-minute time-second [time-utc]" (no separators) and:

      The form of time with UTC offset MUST NOT be used. For example, the following is NOT VALID for a time value:

      230000-0800        ;Invalid time format

However, in practice (see hcalendar-examples-in-wild) hCalendar date-time properties often state the timezone offset in order to make the human visible time consistent with the machine readable time for easier verification (minimize DRY divergence probability).

Thus hCalendar processors which generate iCalendar files MUST handle parsing hCalendar date-time properties (e.g. DTSTART, DTEND, etc.) with an explicit timezone offset, and convert the specified date-time value to a UTC value when converting to iCalendar.

All hCalendar processor requirements above should be documented thoroughly in hcalendar-parsing.

KOrganizer

  • platforms: All Linux, *BSD, etc. (Wherever KDE runs)
  • supports the "webcal:" protocol, as well as "http:", "ftp:", "fish:", etc.

Evolution

  • platform: Fedora Core 3
  • supports "webcal:" protocol

Sunbird

Mozilla Sunbird

  • platforms: Windows XP, others?
  • supports "webcal:" protocol

Microsoft Outlook

Microsoft Outlook 2007

Microsoft Outlook 2007 (MSOutlook2k7)

  • platforms: Windows
  • supports importing and subscribing to .ics files, "webcal:" URLs, etc.

Microsoft Outlook 2003

Microsoft Outlook 2003 (MSOutlook2k3)

  • platforms: Windows
  • supports importing .ics files
MSOutlook2k3 general comments

For importing, MSOutlook2k3 apparently requires VEVENTS to have UID, DTSTAMP, and METHOD properties. (citation/platform/date tested info needed). If any of the three is not present, returns this message:

This error can appear if you have attempted to save a recurring Lunar appointment in iCalendar format.
To avoid this error, set the appointment option to Gregorian instead of Lunar.

After some testing, this seems to be the generic message to indicate a problem with event import.

No such restriction is placed on vCalendar 1.0 events. So, if VERSION:1.0 is output instead of VERSION:2.0, the only required field is DTSTART. Note that VERSION property may be omitted. In this case, value inferred as 1.0.

  • UID and DTSTAMP is required for Outlook to import. GeoffWebb 14:03, 9 Dec 2005 (PST)
MSOutlook2k3 sample importable iCalendar
BEGIN:VCALENDAR
VERSION:2.0
METHOD:PUBLISH
BEGIN:VEVENT
UID:0
DTSTAMP:20060601T080000
DTSTART:20060601T080000
END:VEVENT
END:VCALENDAR
MSOutlook2k3 sample importable vCalendar
BEGIN:VCALENDAR
BEGIN:VEVENT
DTSTART:20060601T080000
END:VEVENT
END:VCALENDAR

notes

  • the "webcal:" URL protocol scheme is non-standard.

contributors

related pages

This specification is a work in progress. As additional aspects are discussed, understood, and written, they will be added. These thoughts, issues, and questions are kept in separate pages.