Events created in KOrganizer an hour off in Android (probably VTIMEZONE & DST related)



  • Fruux is the calendar hosting service in question. The process I've used to reproduce this is as follows:

    • Create two new calendars in Fruux, "DAVdroid" and "KOrganizer".
    • Create an event in KOrganizer on 31st October (after DST will have ended, bringing the Europe/Dublin timezone from UTC+1 to UTC equivalent), for 3 to 4 PM; the event shows correctly in both KOrganizer and Fruux's online calendar, but in Android shows as being from 2 to 3 PM.
    • Create an event in Android with the same details (I use aCalendar+, however notice the same issue in Simple Calendar); the event shows correctly everywhere, including both KOrganizer and Fruux's online calendar.

    If trying to reproduce from another country/timezone the key point is to create an event across a daylight savings time switchover.

    Here is the raw ICS version of the KOrganizer calendar:

    BEGIN:VCALENDAR
    VERSION:2.0
    CALSCALE:GREGORIAN
    PRODID:-//SabreDAV//SabreDAV 3.1.0-alpha2//EN
    X-WR-CALNAME:KOrganizer
    X-APPLE-CALENDAR-COLOR:#e6c800FF
    BEGIN:VTIMEZONE
    TZID:Europe/Dublin
    BEGIN:STANDARD
    TZNAME:IST
    TZOFFSETFROM:+0000
    TZOFFSETTO:+0100
    DTSTART:19820328T010000
    RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
    END:STANDARD
    BEGIN:STANDARD
    TZNAME:IST
    TZOFFSETFROM:+0000
    TZOFFSETTO:+0100
    DTSTART:19720319T020000
    RRULE:FREQ=YEARLY;UNTIL=19810329T010000;COUNT=9;BYDAY=3SU;BYMONTH=3
    RDATE;VALUE=DATE-TIME:19800316T020000
    END:STANDARD
    BEGIN:STANDARD
    TZNAME:GMT
    TZOFFSETFROM:+0100
    TZOFFSETTO:+0000
    DTSTART:19811025T020000
    RRULE:FREQ=YEARLY;UNTIL=19891029T020000;COUNT=8;BYDAY=4SU;BYMONTH=10
    END:STANDARD
    BEGIN:STANDARD
    TZNAME:GMT
    TZOFFSETFROM:+0100
    TZOFFSETTO:+0000
    DTSTART:19901028T020000
    RRULE:FREQ=YEARLY;UNTIL=19991031T020000;COUNT=9;BYDAY=4SU;BYMONTH=10
    END:STANDARD
    BEGIN:STANDARD
    TZNAME:GMT
    TZOFFSETFROM:+0100
    TZOFFSETTO:+0000
    DTSTART:20001029T020000
    RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
    END:STANDARD
    BEGIN:STANDARD
    TZNAME:GMT
    TZOFFSETFROM:+0100
    TZOFFSETTO:+0000
    DTSTART:19721029T030000
    RDATE;VALUE=DATE-TIME:19721029T030000
    RDATE;VALUE=DATE-TIME:19731028T030000
    RDATE;VALUE=DATE-TIME:19741027T030000
    RDATE;VALUE=DATE-TIME:19751026T030000
    RDATE;VALUE=DATE-TIME:19761024T030000
    RDATE;VALUE=DATE-TIME:19771023T030000
    RDATE;VALUE=DATE-TIME:19781029T030000
    RDATE;VALUE=DATE-TIME:19791028T030000
    RDATE;VALUE=DATE-TIME:19801026T030000
    RDATE;VALUE=DATE-TIME:19881023T020000
    RDATE;VALUE=DATE-TIME:19981025T020000
    END:STANDARD
    END:VTIMEZONE
    BEGIN:VEVENT
    DTSTAMP:20181024T122432Z
    CREATED:20181024T122432Z
    UID:5198c47c-5bd2-47f7-bbc3-021eacb163d0
    LAST-MODIFIED:20181024T122432Z
    SUMMARY:KOrganizer Test Event
    DTSTART;TZID=Europe/Dublin:20181031T150000
    DTEND;TZID=Europe/Dublin:20181031T160000
    TRANSP:OPAQUE
    END:VEVENT
    END:VCALENDAR
    

    And here is the ICS version of the DAVdroid calendar:

    BEGIN:VCALENDAR
    VERSION:2.0
    CALSCALE:GREGORIAN
    PRODID:-//SabreDAV//SabreDAV 3.1.0-alpha2//EN
    X-WR-CALNAME:DAVdroid
    X-APPLE-CALENDAR-COLOR:#e6c800FF
    BEGIN:VTIMEZONE
    TZID:Europe/Dublin
    TZURL:http://tzurl.org/zoneinfo/Europe/Dublin
    X-LIC-LOCATION:Europe/Dublin
    BEGIN:DAYLIGHT
    TZOFFSETFROM:+0000
    TZOFFSETTO:+0100
    TZNAME:IST
    DTSTART:19810329T010000
    RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
    END:DAYLIGHT
    BEGIN:DAYLIGHT
    TZOFFSETFROM:-002521
    TZOFFSETTO:+003439
    TZNAME:IST
    DTSTART:19160521T020000
    RDATE:19160521T020000
    END:DAYLIGHT
    BEGIN:DAYLIGHT
    TZOFFSETFROM:+0000
    TZOFFSETTO:+0100
    TZNAME:BST
    DTSTART:19170408T020000
    RDATE:19170408T020000
    RDATE:19180324T020000
    RDATE:19190330T020000
    RDATE:19200328T020000
    RDATE:19210403T020000
    END:DAYLIGHT
    BEGIN:DAYLIGHT
    TZOFFSETFROM:+0000
    TZOFFSETTO:+0100
    TZNAME:IST
    DTSTART:19220326T020000
    RDATE:19220326T020000
    RDATE:19230422T020000
    RDATE:19240413T020000
    RDATE:19250419T020000
    RDATE:19260418T020000
    RDATE:19270410T020000
    RDATE:19280422T020000
    RDATE:19290421T020000
    RDATE:19300413T020000
    RDATE:19310419T020000
    RDATE:19320417T020000
    RDATE:19330409T020000
    RDATE:19340422T020000
    RDATE:19350414T020000
    RDATE:19360419T020000
    RDATE:19370418T020000
    RDATE:19380410T020000
    RDATE:19390416T020000
    RDATE:19400225T020000
    RDATE:19470316T020000
    RDATE:19480418T020000
    RDATE:19490403T020000
    RDATE:19500416T020000
    RDATE:19510415T020000
    RDATE:19520420T020000
    RDATE:19530419T020000
    RDATE:19540411T020000
    RDATE:19550417T020000
    RDATE:19560422T020000
    RDATE:19570414T020000
    RDATE:19580420T020000
    RDATE:19590419T020000
    RDATE:19600410T020000
    RDATE:19610326T020000
    RDATE:19620325T020000
    RDATE:19630331T020000
    RDATE:19640322T020000
    RDATE:19650321T020000
    RDATE:19660320T020000
    RDATE:19670319T020000
    RDATE:19680218T020000
    RDATE:19720319T020000
    RDATE:19730318T020000
    RDATE:19740317T020000
    RDATE:19750316T020000
    RDATE:19760321T020000
    RDATE:19770320T020000
    RDATE:19780319T020000
    RDATE:19790318T020000
    RDATE:19800316T020000
    END:DAYLIGHT
    BEGIN:STANDARD
    TZOFFSETFROM:+0100
    TZOFFSETTO:+0000
    TZNAME:GMT
    DTSTART:19961027T020000
    RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
    END:STANDARD
    BEGIN:STANDARD
    TZOFFSETFROM:-0025
    TZOFFSETTO:-002521
    TZNAME:DMT
    DTSTART:18800802T000000
    RDATE:18800802T000000
    END:STANDARD
    BEGIN:STANDARD
    TZOFFSETFROM:+003439
    TZOFFSETTO:+0000
    TZNAME:GMT
    DTSTART:19161001T030000
    RDATE:19161001T030000
    END:STANDARD
    BEGIN:STANDARD
    TZOFFSETFROM:+0100
    TZOFFSETTO:+0000
    TZNAME:GMT
    DTSTART:19170917T030000
    RDATE:19170917T030000
    RDATE:19180930T030000
    RDATE:19190929T030000
    RDATE:19201025T030000
    RDATE:19211003T030000
    RDATE:19221008T030000
    RDATE:19230916T030000
    RDATE:19240921T030000
    RDATE:19251004T030000
    RDATE:19261003T030000
    RDATE:19271002T030000
    RDATE:19281007T030000
    RDATE:19291006T030000
    RDATE:19301005T030000
    RDATE:19311004T030000
    RDATE:19321002T030000
    RDATE:19331008T030000
    RDATE:19341007T030000
    RDATE:19351006T030000
    RDATE:19361004T030000
    RDATE:19371003T030000
    RDATE:19381002T030000
    RDATE:19391119T030000
    RDATE:19461006T030000
    RDATE:19471102T030000
    RDATE:19481031T030000
    RDATE:19491030T030000
    RDATE:19501022T030000
    RDATE:19511021T030000
    RDATE:19521026T030000
    RDATE:19531004T030000
    RDATE:19541003T030000
    RDATE:19551002T030000
    RDATE:19561007T030000
    RDATE:19571006T030000
    RDATE:19581005T030000
    RDATE:19591004T030000
    RDATE:19601002T030000
    RDATE:19611029T030000
    RDATE:19621028T030000
    RDATE:19631027T030000
    RDATE:19641025T030000
    RDATE:19651024T030000
    RDATE:19661023T030000
    RDATE:19671029T030000
    RDATE:19711031T030000
    RDATE:19721029T030000
    RDATE:19731028T030000
    RDATE:19741027T030000
    RDATE:19751026T030000
    RDATE:19761024T030000
    RDATE:19771023T030000
    RDATE:19781029T030000
    RDATE:19791028T030000
    RDATE:19801026T030000
    RDATE:19811025T020000
    RDATE:19821024T020000
    RDATE:19831023T020000
    RDATE:19841028T020000
    RDATE:19851027T020000
    RDATE:19861026T020000
    RDATE:19871025T020000
    RDATE:19881023T020000
    RDATE:19891029T020000
    RDATE:19901028T020000
    RDATE:19911027T020000
    RDATE:19921025T020000
    RDATE:19931024T020000
    RDATE:19941023T020000
    RDATE:19951022T020000
    END:STANDARD
    BEGIN:STANDARD
    TZOFFSETFROM:+0000
    TZOFFSETTO:+0000
    TZNAME:GMT
    DTSTART:19211206T000000
    RDATE:19211206T000000
    RDATE:19960101T000000
    END:STANDARD
    BEGIN:STANDARD
    TZOFFSETFROM:+0100
    TZOFFSETTO:+0100
    TZNAME:IST
    DTSTART:19681026T230000
    RDATE:19681026T230000
    END:STANDARD
    END:VTIMEZONE
    BEGIN:VEVENT
    DTSTAMP:20181024T122609Z
    UID:3bd064c2-b586-4d1d-ae08-f2f2797b5f08
    SUMMARY:DAVdroid Test Event
    DTSTART;TZID=Europe/Dublin:20181031T150000
    DTEND;TZID=Europe/Dublin:20181031T160000
    CLASS:PRIVATE
    STATUS:CONFIRMED
    END:VEVENT
    END:VCALENDAR
    

    Both are exactly as downloaded by Fruux except for the removal of the X-FRUUX-URL field from both events. The obvious difference is in the VTIMEZONE definition, but given Fruux also reads both correctly I'm unsure whether the issue lies in the libraries used by DAVdroid for parsing ICS or elsewhere?

    Any help appreciated.


  • developer

    Hello,

    Thanks for your verbose report. However, I can't reproduce this problem with the current DAVdroid version, Android 9.0 (plain emulator image) and Google Calendar 5.7 as calendar app, which shows your KOrganizer event like this:

    0_1540399891505_Screenshot_1540399873.png

    Please provide steps to reproduce your DAVdroid debug info (DAVdroid / Settings / Debug info) which contains your DAVdroid version and other important information; and verbose DAVdroid logs while it downloads the event as described in [READ BEFORE POSTING] What's required to diagnose a problem.



  • @rfc2822 apologies, I forgot to include version information. I'm running:

    • DAVdroid 2.0.4-gplay
    • KOrganizer 5.7.3
    • Android 7.1.1

    Although while checking that I've just realised that the Oreo 8.1 update has finally been released for my phone, so I'll install that and check tonight too. I'll also enable logging to an external file and get you that info in the process. 👍