On Fri, 2013-05-31 at 09:09 +0200, Vidar Evenrud Seeberg wrote:
Den 05/30/2013 11:49 PM, skrev David Woodhouse:DTSTART:20130602T180000 DTEND:20130602T190000 Hm, that's odd. Shouldn't those end with a 'Z' to indicate that they are in GMT? Then they'd be correct, right? The meeting was actually at 18:00 GMT?No. The meeting was at 20:00 (look at summary: Test20)
Remember, times are meaningless without timezones. You should *always* specify the timezone unless it's completely obvious. The meeting was at 20:00 in *what* time zone? I thought it was at 20:00 in your local time zone, GMT+2. Which makes it 18:00 GMT?
I'd like to see what we actually got back from the Exchange server for this event — can you show the XML you see in the calendar-factory output? From <t:CalendarItem> to </t:CalendarItem>.Actually, the output seems encoded in some way, so I do not know which calendar item is the correct.
They're base64-encoded. Here's the first one, which I think is the interesting one: BEGIN:VCALENDAR METHOD:PUBLISH PRODID:Microsoft Exchange Server 2010 VERSION:2.0 BEGIN:VTIMEZONE TZID:W. Europe Standard Time BEGIN:STANDARD DTSTART:16010101T030000 TZOFFSETFROM:+0200 TZOFFSETTO:+0100 RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10 END:STANDARD BEGIN:DAYLIGHT DTSTART:16010101T020000 TZOFFSETFROM:+0100 TZOFFSETTO:+0200 RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3 END:DAYLIGHT END:VTIMEZONE BEGIN:VEVENT ORGANIZER;CN=Vidar Seeberg:MAILTO:vidar seeberg norsvin no SUMMARY;LANGUAGE=en-US:Test entered for 20-21 DTSTART;TZID=W. Europe Standard Time:20130602T200000 DTEND;TZID=W. Europe Standard Time:20130602T210000 UID:1fe056fd367849478ebb324bd2fb0260 CLASS:PUBLIC PRIORITY:5 DTSTAMP:20130531T064042Z TRANSP:OPAQUE STATUS:CONFIRMED SEQUENCE:0 X-MICROSOFT-CDO-APPT-SEQUENCE:0 X-MICROSOFT-CDO-OWNERAPPTID:2111176071 X-MICROSOFT-CDO-BUSYSTATUS:BUSY X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY X-MICROSOFT-CDO-ALLDAYEVENT:FALSE X-MICROSOFT-CDO-IMPORTANCE:1 X-MICROSOFT-CDO-INSTTYPE:0 X-MICROSOFT-DISALLOW-COUNTER:FALSE END:VEVENT END:VCALENDAR
However, some CalendarItems have timezone and some have not.
Right. As I explained, you don't *need* to preserve the timezone for a non-recurring meeting. As long as the time is correct, it doesn't matter. It's quite normal to discard the original timezone and just remember the actual time of the meeting in UTC.
This is another ics for a test for a meeting at 20:00 to 21:00 entered on the phone (exported from Evolution): BEGIN:VCALENDAR PRODID:-//Ximian//NONSGML Evolution Calendar//EN VERSION:2.0 METHOD:PUBLISH BEGIN:VEVENT SUMMARY;LANGUAGE=en-US:Test entered for 20-21 DTSTART:20130602T180000 DTEND:20130602T190000 UID:1fe056fd367849478ebb324bd2fb0260 CLASS:PUBLIC PRIORITY:5 DTSTAMP:20130531T064042Z TRANSP:OPAQUE STATUS:CONFIRMED SEQUENCE:0 X-MICROSOFT-CDO-APPT-SEQUENCE:0 X-MICROSOFT-CDO-OWNERAPPTID:2111176071 X-MICROSOFT-CDO-BUSYSTATUS:BUSY X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY X-MICROSOFT-CDO-ALLDAYEVENT:FALSE X-MICROSOFT-CDO-IMPORTANCE:1 X-MICROSOFT-CDO-INSTTYPE:0 X-MICROSOFT-DISALLOW-COUNTER:FALSE X-EVOLUTION-ITEMID: AAMkADFmODk4OWM3LThkZTYtNDNiNy04MDI3LWE2MDFiNjEwMTVlZQBGAAAAAABfPsKLxmAeTq GBhPnLcSToBwDpmmDdm/HZQbnuhOn4fMvuAAABV6JlAADZpHxTQYzrRJ5/zjxxNiNuAAAAKCiF AAA= X-EVOLUTION-CHANGEKEY:DwAAABYAAADZpHxTQYzrRJ5/zjxxNiNuAAAAKvG3 END:VEVENT END:VCALENDAR
OK, so we can compare this with what Exchange actually gave us, which I showed above. Exchange *did* give us a full timezone definition for "W. Europe Standard Time", and then defined the meeting as 20:00-21:00 in that time zone. It looks like Evolution converted to UTC (18:00-19:00) but failed to correctly represent that. It's stored it as a "floating time", as Milan said. Floating times (where the timezone isn't fixed, and it's 18:00 in whatever time zone the viewer happens to be in at the moment), are fairly much useless for any event other than "hey, the sun is overhead". This might have happened because we don't usually expect Exchange to give us non-recurring meetings in any timezone *other* than UTC, so this code path isn't well-tested?
This is an ics for an event entered in OWA for a meeting at 21:00 (exported from Evolution) :
BEGIN:VTIMEZONE TZID:Romance Standard Time
...
END:VTIMEZONE BEGIN:VEVENT SUMMARY;LANGUAGE=nb-NO:Test entered for 21 in OWA DTSTART;TZID=Romance Standard Time:20130601T210000 DTEND;TZID=Romance Standard Time:20130601T220000
This one defines a time zone, then gives the meeting start/end in terms of that timezone. It looks fine.
This is an ics of an event entered in Outlook as exported by Evolution: BEGIN:VCALENDAR PRODID:-//Ximian//NONSGML Evolution Calendar//EN VERSION:2.0 METHOD:PUBLISH BEGIN:VTIMEZONE TZID:(GMT+01:00) Amsterdam\, Berlin\, Bern\, Rome\, Stockholm\, Vienna ... END:VTIMEZONE BEGIN:VEVENT SUMMARY;LANGUAGE=nb-NO:Test 2100 entered in Outlook DTSTART;TZID="(GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna":20130531T210000 DTEND;TZID="(GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna": 20130531T213000
Same thing, looks fine. Except for that stupid cosmetic Microsoft bug where the textual name of the time zone which is currently GMT+2, has the text "GMT+01:00" in it. Stupidly. -- dwmw2
Attachment:
smime.p7s
Description: S/MIME cryptographic signature