[Vobject] parsing broken iCalendar objects

David Arnold davida at pobox.com
Thu Apr 26 03:33:17 CDT 2007

hi all,

i've struck a problem parsing some Outlook 11 (2003) generated iCalendar
objects, and i imagine i'm not the first to do so, so i thought i'd ask
how others have dealt with the problem:

specifically, within a VTIMEZONE, i have a TZID like

   TZID:Canberra, Melbourne, Sydney

from an Outlook user based in Australia, and within the following
VEVENT, the DTSTART looks like, eg.

   DTSTART;TZID="Canberra, Melbourne, Sydney":20070501T100000

having done a vobject.readOne() on the file, the vevent.dtstart value is
a naive datetime, and my program is failing when trying to convert that
into a different timezone.

using prettyPrint() on the root object, i see that the parsed TZID has a
value of

   TZID: <TZID{}Canberra>

and so it's failing to match the TZID specified in the DTSTART.

checking RFC-2445, i see that 'paramtext' is a sequence of SAFE-CHAR,
and that SAFE-CHAR does not include the ASCII comma.

so, it appears that vobject is doing the right thing, and Outlook is
emitting non-compliant TZID values, but ... i'd like to parse the bogus
Outlook files regardless.

on the assumption that i'm not the first to strike this kind of problem,
does anyone have any advice on the best way to approach this?

thanks ...


ps. i'd like to offer my congratulations to Jeffrey, and all the
    contributors to VObject -- it's an extremely useful bit of code, and
    very much appreciated.  thank you, thank you.

More information about the VObject mailing list