vCalendar/iCalendar-Analyse timezone

Schreibe ich code in C++ zu Parsen vCal/iCal-format ist, und es richtig verarbeitet UTC-Zeit und lokaler Formate, aber jetzt habe ich ein Programm gefunden, das die Erstellung dieser komplexeren format, das verwendet spezielle Zeitzone und ich bin nicht in der Lage, herauszufinden, wie man es richtig zu analysieren. Hier ist ein Beispiel (sorry für die multi-line-Formatierung, habe versucht, verschiedene Dinge zu beheben):

BEGIN:VCALENDAR
METHOD:REQUEST
PRODID:Microsoft CDO for Microsoft Exchange
VERSION:2.0
BEGIN:VTIMEZONE
TZID:(GMT-06.00) Central Time (US & Canada)
X-MICROSOFT-CDO-TZID:11
BEGIN:STANDARD
DTSTART:16010101T020000
TZOFFSETFROM:-0500
TZOFFSETTO:-0600
RRULE:FREQ=YEARLY;WKST=MO;INTERVAL=1;BYMONTH=11;BYDAY=1SU
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:16010101T020000
TZOFFSETFROM:-0600
TZOFFSETTO:-0500
RRULE:FREQ=YEARLY;WKST=MO;INTERVAL=1;BYMONTH=3;BYDAY=2SU
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
DTSTAMP:20120709T210422Z
DTSTART;TZID="(GMT-06.00) Central Time (US & Canada)":20120711T110000
SUMMARY:DR Kickoff Call
LOCATION:GoToMeeting Invitation
DTEND;TZID="(GMT-06.00) Central Time (US & Canada)":20120711T120000
DESCRIPTION:Hi Guys
STATUS:CONFIRMED
END:VEVENT
END:VCALENDAR

Ich konvertieren wollen DTSTART zu UTC. Ich weiß, ich TZOFFSETTO, aber wie kann ich (in einem robusten Art und Weise) wissen, ob ich sollte, verwenden Sie die STANDARD-oder SOMMERZEIT Wert? Im Beispiel unten ist es das heutige Datum, und STANDARD verwendet werden soll (basierend auf der aktuellen Sitzung Zeit, ich weiß, es zu sein), aber wie würde ich über ein Programm wissen?

Ich glaube nicht, es wäre robust sein, um keine Annahmen basierend auf offsets oder TZID-Namen, da diese vCal/iCal-Formate nicht immer anzeigen zu alles standard. Es ist eine Schande, die Erzeugung von app können nicht nur UTC-Zeit, aber nicht, wie ich die Kontrolle über GoToMeeting.com und Sie sind sehr beliebt, also kann ich auch nicht einfach ignorieren dieses Problem.

Das einzige, was ich sehen kann, dass mir vielleicht sagen, welcher Wert zu verwenden wäre die RRULE, aber ich wirklich brauchen, um in der Wiederholung des DTSTART basierend auf all die verschiedenen möglichen RRULE Werte herauszufinden, die man anwenden?

Meine app laufen muss, auf WinXP+ und ich will nicht verlangen, Outlook oder CDO zu analysieren, diese für mich.

InformationsquelleAutor eselk | 2012-07-11
Schreibe einen Kommentar