daylight issue for repeated meetings



  • Dear developers and community,

    I have a problem which might related to the daylight saving time. I’m using office365 and somebody sent me a meeting schedule. ICS as below:

    RRULE:FREQ=WEEKLY;UNTIL=20191218T080000Z;INTERVAL=1;BYDAY=WE;WKST=MO
    UID:040000008200E00074C5B7101A82E00800000000907682BE2B88D501000000000000000
     01000000077F6CDA3B634104B9BC1ED539119F558
    SUMMARY:Weekly Meeting - bla bla bla
    DTSTART;TZID=W. Europe Standard Time:20191023T090000
    DTEND;TZID=W. Europe Standard Time:20191023T093000
    CLASS:PUBLIC
    PRIORITY:5
    DTSTAMP:20191119T032705Z
    TRANSP:OPAQUE
    STATUS:CONFIRMED
    SEQUENCE:1
    LOCATION:Skype-Besprechung
    X-MICROSOFT-CDO-APPT-SEQUENCE:1
    X-MICROSOFT-CDO-BUSYSTATUS:BUSY
    X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
    X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
    X-MICROSOFT-CDO-IMPORTANCE:1
    X-MICROSOFT-CDO-INSTTYPE:1
    X-MICROSOFT-DONOTFORWARDMEETING:FALSE
    X-MICROSOFT-DISALLOW-COUNTER:FALSE
    END:VEVENT
    BEGIN:VEVENT
    DESCRIPTION: bla bla bla...
    

    My timezone is UTC+8 (Beijing). The meeting time is correct on my outlook (e.g. 16:00 - 16:30 on Nov 20, 2019). I shared my office365 calendar by ICS. when I using ICSx5 to sync it to my android phone, it shows “15:00 - 15:30 on Nov 20, 2019”.

    When the meeting was created (Oct 23, 2019), it’s still in daylight saving time. so for UTC+8, the time is “15:00 - 15:30”.
    The daylight saving time ends on Oct 27, 2019. After that, the time should be “16:00 - 16:30” for UTC+8.

    Please fix this bug. Thanks.
    Best regards


  • developer

    Hello,

    1. Please provide the full VEVENT file.
    2. Please provide exact steps to reproduce the problem.

    I’m not sure whether you’re talking about the instances of the recurring event or what the problem is.

    Instances of recurring events are calculated by Android, and because the timezone “W. Europe Standard Time” can’t be mapped to any Android time, the event is probably stored in UTC, which doesn’t have time zones.



  • @HFTB6JM8 said in daylight issue for repeated meetings:

    Weekly Meeting

    sorry for the incompleted info I provided. please find the full VEVENT below. Thanks

    BEGIN:VCALENDAR
    METHOD:PUBLISH
    PRODID:Microsoft Exchange Server 2010
    VERSION:2.0
    X-WR-CALNAME:Calendar
    BEGIN:VTIMEZONE
    TZID:China Standard Time
    BEGIN:STANDARD
    DTSTART:16010101T000000
    TZOFFSETFROM:+0800
    TZOFFSETTO:+0800
    END:STANDARD
    BEGIN:DAYLIGHT
    DTSTART:16010101T000000
    TZOFFSETFROM:+0800
    TZOFFSETTO:+0800
    END:DAYLIGHT
    END:VTIMEZONE
    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:VTIMEZONE
    TZID:India Standard Time
    BEGIN:STANDARD
    DTSTART:16010101T000000
    TZOFFSETFROM:+0530
    TZOFFSETTO:+0530
    END:STANDARD
    BEGIN:DAYLIGHT
    DTSTART:16010101T000000
    TZOFFSETFROM:+0530
    TZOFFSETTO:+0530
    END:DAYLIGHT
    END:VTIMEZONE
    BEGIN:VEVENT
    DESCRIPTION:\n.............................................................
     .................................\n\n\n
    RRULE:FREQ=WEEKLY;UNTIL=20191218T080000Z;INTERVAL=1;BYDAY=WE;WKST=MO
    UID:040000008200E00074C5B7101A82E00800000000907682BE2B88D501000000000000000
     01000000077F6CDA3B634104B9BC1ED539119F558
    SUMMARY:Weekly Meeting - bla bla bla
    DTSTART;TZID=W. Europe Standard Time:20191023T090000
    DTEND;TZID=W. Europe Standard Time:20191023T093000
    CLASS:PUBLIC
    PRIORITY:5
    DTSTAMP:20191119T090349Z
    TRANSP:OPAQUE
    STATUS:CONFIRMED
    SEQUENCE:1
    LOCATION:Skype-Besprechung
    X-MICROSOFT-CDO-APPT-SEQUENCE:1
    X-MICROSOFT-CDO-BUSYSTATUS:BUSY
    X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
    X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
    X-MICROSOFT-CDO-IMPORTANCE:1
    X-MICROSOFT-CDO-INSTTYPE:1
    X-MICROSOFT-DONOTFORWARDMEETING:FALSE
    X-MICROSOFT-DISALLOW-COUNTER:FALSE
    END:VEVENT
    

  • developer

    Thanks for the full file. I can confirm that the problem you have described (event shown at 15:00 UTC+8 instead of 16:00 UTC+8 on Oct 30 and later)

    • occurs when the device time zone is set to UTC+8 at sync time,
    • but does /not/ occur when the time zone is set to CET/CEST at sync time.

    I think the problem is that “W. Europe Standard Time” is not an Android time zone identifier, so the event is translated to the device local time zone. So the instances will be calculated assuming that the time is in the local device time zone. In UTC+8 there is no DST, so the instances will also be calculated without DST change.

    This is a problem in the Android calendar provider. It also happens with Android’s own Exchange sync (without ICSx⁵), see

    Sorry…



  • @rfc2822 , Thanks for your explanation.
    It’s strange that the android calendar doesn’t respect the time zone identifier which is defined in the ICS file (BEGIN:VTIMEZONE).
    I tried to import this ICS to online google calendar. Google calendar handle it correctly. But as we know, google calendar doesn’t frequently sync ICS file. so I can’t use it.

    Nevertheless, if your assumption is correct, we have no choice but wait for google to fix the bug.


  • developer

    Hi,

    I can’t reproduce that with importing the event to Google Calendar. I have downloaded the .ics, imported it with Google Calendar and it always shows 15:00 (and never 16:00). Can you please provide the exact steps (including time zone of your device) to get this working with Google Calendar?



  • @rfc2822 ,

    1. login into https://calendar.google.com/calendar
    2. click “+” above “other calendars” and then click “Import”.
      2019-11-21_111809.png
    3. choose the ICS file week_meeting.ics I provided and click “Import”.
    4. go back to the calendar and check the events.
      2019-11-21_112303.png

    the time zone settings of my google calendar as below:
    2019-11-21_112444.png

    btw, I logged in google account in my android phone (Huawei LYA-AL00, EMUI 10.0.0.175, timezone UTC+8). I check the imported events in the google calendar app, they are all correct (16:00 out of DST).
    But when I check the ICSx5 subscripted events (https://outlook.office365.com/owa/calendar/xxx@xxx.com/.../.../reachcalendar.ics) in google calendar app, they are wrong (15:00 out of DST).


  • developer

    Thanks for the information. I have verified that Google Calendar stores the event in Europa/Amsterdam time zone, which has DST:

    Row: 3 originalAllDay=NULL, account_type=com.google, exrule=NULL, mutators=NULL, originalInstanceTime=NULL, allDay=0, allowedReminders=0,1,2, rrule=FREQ=WEEKLY;UNTIL=20191218T080000Z;INTERVAL=1;WKST=MO;BYDAY=WE, canOrganizerRespond=1, lastDate=1576657800000, visible=1, calendar_id=2, hasExtendedProperties=0, calendar_access_level=200, selfAttendeeStatus=0, allowedAvailability=0,1, eventColor_index=NULL, isOrganizer=1, _sync_id=_60q30c1g60o30e1i60o4ac1g60rj8gpl88rj2c1h84s34h9g60s30c1g60o30c1g74o3edho6914aci270s48d9g64o30c1g60o30c1g60o30c1g60o32c1g60o30c1g6srkcdi38h0j6ghm6cq32c1k88sk4gph8l23acpp64ojihhl6ks0, calendar_color_index=23, _id=55, guestsCanInviteOthers=1, allowedAttendeeTypes=0,1,2, dtstart=1571814000000, guestsCanSeeGuests=1, sync_data9=16, sync_data8=NULL, exdate=NULL, sync_data7=NULL, sync_data6=NULL, sync_data1=040000008200E00074C5B7101A82E00800000000907682BE2B88D50100000000000000001000000077F6CDA3B634104B9BC1ED539119F558, description=…, eventTimezone=Europe/Amsterdam, availability=0, title=Weekly Meeting - bla bla bla, ownerAccount=haqurqs12unl3029hrqnt6lnrg23iclp@import.calendar.google.com, sync_data5=2019-11-22T17:33:44.910Z, sync_data4=“3148888049820000”, sync_data3=NULL, sync_data2=1, duration=P1800S, lastSynced=0, guestsCanModify=0, cal_sync3=NULL, rdate=NULL, cal_sync2=NULL, maxReminders=5, isPrimary=0, cal_sync1=haqurqs12unl3029hrqnt6lnrg23iclp@import.calendar.google.com, cal_sync10=NULL, account_name=xxxxxxx, cal_sync7=NULL, cal_sync6=NULL, cal_sync5=0, cal_sync4=1, calendar_color=-3312410, cal_sync9=NULL, cal_sync8=1574445720090, dirty=0, calendar_timezone=UTC, accessLevel=3, eventLocation=Skype-Besprechung, hasAlarm=0, uid2445=NULL, deleted=0, eventColor=NULL, organizer=haqurqs12unl3029hrqnt6lnrg23iclp@import.calendar.google.com, eventStatus=1, customAppUri=NULL, canModifyTimeZone=1, eventEndTimezone=NULL, customAppPackage=NULL, original_sync_id=NULL, hasAttendeeData=1, displayColor=-3312410, dtend=NULL, original_id=NULL, sync_data10=NULL, calendar_displayName=Test 1

    In this case, it works because the RRULE applies to a time zone with DST.

    Now the question is: Where shall ICSx⁵ know from that the best match for “W. Europe Standard Time” is some European time zone with DST (like Europe/Amsterdam)? I can only imagine hardcoded mapping, but I’d like to avoid that 😕


  • developer

    Should be fixed by https://gitlab.com/bitfireAT/ical4android/commit/9459f80ddf32dec83969848428b949a649ff2502.

    I have uploaded 1.8.6-beta1 to Google Play. Can you become a beta tester and try whether this works:

    1. update ICSx⁵ to 1.8.6-beta1
    2. unsubscribe from the questionable feed
    3. subscribe to it again
    4. force sync
    5. times should be fixed


  • @rfc2822 , I’ll try and provide a feedback later.
    I don’t think hardcoded mapping is a good way. Google calendar doesn’t do like this. You can try to import this ICS file to google calendar week_meeting_hello.ics . In this file, the TZID is “HelloWorld”. Google calendar can handle it well too.
    I guess it treats the below info as “Europe/Amsterdam” other than a string “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
    

  • developer

    @HFTB6JM8 Maybe it handles all unknown timezones as Europe/Amsterdam (like DAVx⁵ when the device timezone is Europe/Amsterdam)… what are your primary and secondary time zones in Google Calendar (in the Web) settings?



  • @rfc2822 , as you can see in the above thread, primary is CST, secondary is none.
    alt text


  • developer

    Ah, OK.

    So I’ll wait whether you can confirm that it’s now working with the latest beta before relasing it.



  • @rfc2822 , I just received the beta update. It works well with “W. Europe Standard Time”. Thank you very much.


  • developer

    Thanks for the update! The fix will be contained in the next release.


Log in to reply
 

Similar topics