[GH-ISSUE #253] EXDATE is in different format than DTSTART #1146

Closed
opened 2026-03-14 00:28:17 +03:00 by kerem · 3 comments
Owner

Originally created by @archont00 on GitHub (Apr 5, 2019).
Original GitHub issue: https://github.com/aluxnimm/outlookcaldavsynchronizer/issues/253

Hi,

On my Android, the recurring events are shown on every recurrance and EXDATE property is ignored.

RFC 5545 reads:

      The "DTSTART"  property value SHOULD match the pattern of the recurrence rule, if
      specified.  The recurrence set generated with a "DTSTART" property
      value that doesn't match the pattern of the rule is undefined.

This is the original ICS (downloaded from Nextcloud calendar server):

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//ddaysoftware.com//NONSGML DDay.iCal 1.0//EN
BEGIN:VTIMEZONE
TZID:Central Europe Standard Time
BEGIN:STANDARD
DTSTART:19701025T030000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYHOUR=3;BYMINUTE=0;BYMONTH=10
TZNAME:Central Europe Standard Time
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19700329T020000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYHOUR=2;BYMINUTE=0;BYMONTH=3
TZNAME:Central Europe Daylight Time
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
CLASS:PUBLIC
DESCRIPTION:NOT WORKING EXDATE in UTC\n
DTEND;TZID=Central Europe Standard Time:20180810T104500
DTSTAMP:20190404T105957Z
DTSTART;TZID=Central Europe Standard Time:20180810T101500
EXDATE:20180817T081500Z
EXDATE:20180824T081500Z
EXDATE:20180831T081500Z
EXDATE:20180907T081500Z
EXDATE:20180928T081500Z
EXDATE:20181005T081500Z
EXDATE:20181109T091500Z
EXDATE:20181130T091500Z
EXDATE:20181214T091500Z
EXDATE:20181221T091500Z
EXDATE:20181228T091500Z
EXDATE:20190104T091500Z
EXDATE:20190201T091500Z
EXDATE:20190208T091500Z
EXDATE:20190215T091500Z
EXDATE:20190222T091500Z
EXDATE:20190301T091500Z
EXDATE:20190405T081500Z
LOCATION:conf call code: 9699131554
PRIORITY:5
RRULE:FREQ=WEEKLY;BYDAY=FR
SEQUENCE:155
SUMMARY:Top 20
TRANSP:OPAQUE
UID:c73d5b77-d564-4490-a686-50cdc343b8b4
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:This is an event reminder
TRIGGER:-PT15M
END:VALARM
END:VEVENT
END:VCALENDAR

This is a modified ICS entry, with EXDATE using the same pattern as DTSTART:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//ddaysoftware.com//NONSGML DDay.iCal 1.0//EN
BEGIN:VTIMEZONE
TZID:Central Europe Standard Time
BEGIN:STANDARD
DTSTART:19701025T030000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYHOUR=3;BYMINUTE=0;BYMONTH=10
TZNAME:Central Europe Standard Time
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19700329T020000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYHOUR=2;BYMINUTE=0;BYMONTH=3
TZNAME:Central Europe Daylight Time
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
CLASS:PUBLIC
DESCRIPTION:Test of EXDATE with the same pattern as DTSTART\n
DTEND;TZID=Central Europe Standard Time:20180810T104500
DTSTAMP:20190404T105957Z
DTSTART;TZID=Central Europe Standard Time:20180810T101500
EXDATE;TZID=Central Europe Standard Time:20180817T101500
EXDATE;TZID=Central Europe Standard Time:20180824T101500
EXDATE;TZID=Central Europe Standard Time:20180831T101500
EXDATE;TZID=Central Europe Standard Time:20180907T101500
EXDATE;TZID=Central Europe Standard Time:20180928T101500
EXDATE;TZID=Central Europe Standard Time:20181005T101500
EXDATE;TZID=Central Europe Standard Time:20181109T101500
EXDATE;TZID=Central Europe Standard Time:20181130T101500
EXDATE;TZID=Central Europe Standard Time:20181214T101500
EXDATE;TZID=Central Europe Standard Time:20181221T101500
EXDATE;TZID=Central Europe Standard Time:20181228T101500
EXDATE;TZID=Central Europe Standard Time:20190104T101500
EXDATE;TZID=Central Europe Standard Time:20190201T101500
EXDATE;TZID=Central Europe Standard Time:20190208T101500
EXDATE;TZID=Central Europe Standard Time:20190215T101500
EXDATE;TZID=Central Europe Standard Time:20190222T101500
EXDATE;TZID=Central Europe Standard Time:20190301T101500
EXDATE;TZID=Central Europe Standard Time:20190405T101500
LOCATION:conf call code: 9699131554
PRIORITY:5
RRULE:FREQ=WEEKLY;BYDAY=FR
SEQUENCE:155
SUMMARY:Top 20 - Test
TRANSP:OPAQUE
UID:c73d5b77-d564-4490-a686-50cdc343b8c4
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:This is an event reminder
TRIGGER:-PT15M
END:VALARM
END:VEVENT
END:VCALENDAR

The modified ICS displays correctly on Android Calendar (Samsung Calendar, aCalendar+).

If confirmed, would it be possible to format the EXDATE property the same way like DTSTART?

Originally created by @archont00 on GitHub (Apr 5, 2019). Original GitHub issue: https://github.com/aluxnimm/outlookcaldavsynchronizer/issues/253 Hi, On my Android, the recurring events are shown on every recurrance and EXDATE property is ignored. RFC 5545 reads: ``` The "DTSTART" property value SHOULD match the pattern of the recurrence rule, if specified. The recurrence set generated with a "DTSTART" property value that doesn't match the pattern of the rule is undefined. ``` This is the original ICS (downloaded from Nextcloud calendar server): ``` BEGIN:VCALENDAR VERSION:2.0 PRODID:-//ddaysoftware.com//NONSGML DDay.iCal 1.0//EN BEGIN:VTIMEZONE TZID:Central Europe Standard Time BEGIN:STANDARD DTSTART:19701025T030000 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYHOUR=3;BYMINUTE=0;BYMONTH=10 TZNAME:Central Europe Standard Time TZOFFSETFROM:+0200 TZOFFSETTO:+0100 END:STANDARD BEGIN:DAYLIGHT DTSTART:19700329T020000 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYHOUR=2;BYMINUTE=0;BYMONTH=3 TZNAME:Central Europe Daylight Time TZOFFSETFROM:+0100 TZOFFSETTO:+0200 END:DAYLIGHT END:VTIMEZONE BEGIN:VEVENT CLASS:PUBLIC DESCRIPTION:NOT WORKING EXDATE in UTC\n DTEND;TZID=Central Europe Standard Time:20180810T104500 DTSTAMP:20190404T105957Z DTSTART;TZID=Central Europe Standard Time:20180810T101500 EXDATE:20180817T081500Z EXDATE:20180824T081500Z EXDATE:20180831T081500Z EXDATE:20180907T081500Z EXDATE:20180928T081500Z EXDATE:20181005T081500Z EXDATE:20181109T091500Z EXDATE:20181130T091500Z EXDATE:20181214T091500Z EXDATE:20181221T091500Z EXDATE:20181228T091500Z EXDATE:20190104T091500Z EXDATE:20190201T091500Z EXDATE:20190208T091500Z EXDATE:20190215T091500Z EXDATE:20190222T091500Z EXDATE:20190301T091500Z EXDATE:20190405T081500Z LOCATION:conf call code: 9699131554 PRIORITY:5 RRULE:FREQ=WEEKLY;BYDAY=FR SEQUENCE:155 SUMMARY:Top 20 TRANSP:OPAQUE UID:c73d5b77-d564-4490-a686-50cdc343b8b4 X-MICROSOFT-CDO-BUSYSTATUS:BUSY BEGIN:VALARM ACTION:DISPLAY DESCRIPTION:This is an event reminder TRIGGER:-PT15M END:VALARM END:VEVENT END:VCALENDAR ``` This is a modified ICS entry, with EXDATE using the same pattern as DTSTART: ``` BEGIN:VCALENDAR VERSION:2.0 PRODID:-//ddaysoftware.com//NONSGML DDay.iCal 1.0//EN BEGIN:VTIMEZONE TZID:Central Europe Standard Time BEGIN:STANDARD DTSTART:19701025T030000 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYHOUR=3;BYMINUTE=0;BYMONTH=10 TZNAME:Central Europe Standard Time TZOFFSETFROM:+0200 TZOFFSETTO:+0100 END:STANDARD BEGIN:DAYLIGHT DTSTART:19700329T020000 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYHOUR=2;BYMINUTE=0;BYMONTH=3 TZNAME:Central Europe Daylight Time TZOFFSETFROM:+0100 TZOFFSETTO:+0200 END:DAYLIGHT END:VTIMEZONE BEGIN:VEVENT CLASS:PUBLIC DESCRIPTION:Test of EXDATE with the same pattern as DTSTART\n DTEND;TZID=Central Europe Standard Time:20180810T104500 DTSTAMP:20190404T105957Z DTSTART;TZID=Central Europe Standard Time:20180810T101500 EXDATE;TZID=Central Europe Standard Time:20180817T101500 EXDATE;TZID=Central Europe Standard Time:20180824T101500 EXDATE;TZID=Central Europe Standard Time:20180831T101500 EXDATE;TZID=Central Europe Standard Time:20180907T101500 EXDATE;TZID=Central Europe Standard Time:20180928T101500 EXDATE;TZID=Central Europe Standard Time:20181005T101500 EXDATE;TZID=Central Europe Standard Time:20181109T101500 EXDATE;TZID=Central Europe Standard Time:20181130T101500 EXDATE;TZID=Central Europe Standard Time:20181214T101500 EXDATE;TZID=Central Europe Standard Time:20181221T101500 EXDATE;TZID=Central Europe Standard Time:20181228T101500 EXDATE;TZID=Central Europe Standard Time:20190104T101500 EXDATE;TZID=Central Europe Standard Time:20190201T101500 EXDATE;TZID=Central Europe Standard Time:20190208T101500 EXDATE;TZID=Central Europe Standard Time:20190215T101500 EXDATE;TZID=Central Europe Standard Time:20190222T101500 EXDATE;TZID=Central Europe Standard Time:20190301T101500 EXDATE;TZID=Central Europe Standard Time:20190405T101500 LOCATION:conf call code: 9699131554 PRIORITY:5 RRULE:FREQ=WEEKLY;BYDAY=FR SEQUENCE:155 SUMMARY:Top 20 - Test TRANSP:OPAQUE UID:c73d5b77-d564-4490-a686-50cdc343b8c4 X-MICROSOFT-CDO-BUSYSTATUS:BUSY BEGIN:VALARM ACTION:DISPLAY DESCRIPTION:This is an event reminder TRIGGER:-PT15M END:VALARM END:VEVENT END:VCALENDAR ``` The **modified** ICS displays correctly on Android Calendar (Samsung Calendar, aCalendar+). If confirmed, would it be possible to format the EXDATE property the same way like DTSTART?
kerem closed this issue 2026-03-14 00:28:22 +03:00
Author
Owner

@archont00 commented on GitHub (Apr 6, 2019):

Okay, I upgraded the sync client to the latest version and it seems to work fine. Closing now.

<!-- gh-comment-id:480497991 --> @archont00 commented on GitHub (Apr 6, 2019): Okay, I upgraded the sync client to the latest version and it seems to work fine. Closing now.
Author
Owner

@aluxnimm commented on GitHub (Apr 6, 2019):

What client had issues with utc exdate?

<!-- gh-comment-id:480498413 --> @aluxnimm commented on GitHub (Apr 6, 2019): What client had issues with utc exdate?
Author
Owner

@archont00 commented on GitHub (Apr 6, 2019):

I tested a bit more - the culprit (EXDATE being ignored for display in Android) might have been somewhere else than I thought. Even with the last version of Outlook Caldav Synchronizer, the EXDATE is in UTC only and yet, the new events are displayed properly in Android calendar (wit aCalendar+ as a client app).

It seems as if there were duplicates of the same event in Android calendar (and only there) - I had to delete about five times the same recurring event until it actually disappeared. I guess it is the DavDroid sync app that takes care about Android calendar <-> Nextcloud sync and this app might have caused the duplicity.

After re-sync (MS Outlook -> Nextcloud server -> Android calendar (davdroid)) all seems okay.

I had this issue for events, which get lot of updates (cancellations, re-scheduling), so this might somehow trigger the duplicity in the past. I will look for a similar error in future and if it reappears, i will try to investigate - but so far, Outlook Caldav Synchronizer seems to do its part well.

<!-- gh-comment-id:480500197 --> @archont00 commented on GitHub (Apr 6, 2019): I tested a bit more - the culprit (EXDATE being ignored for display in Android) might have been somewhere else than I thought. Even with the last version of Outlook Caldav Synchronizer, the EXDATE is in UTC only and yet, the new events are displayed properly in Android calendar (wit aCalendar+ as a client app). It seems as if there were duplicates of the same event in Android calendar (and only there) - I had to delete about five times the same recurring event until it actually disappeared. I guess it is the DavDroid sync app that takes care about Android calendar <-> Nextcloud sync and this app might have caused the duplicity. After re-sync (MS Outlook -> Nextcloud server -> Android calendar (davdroid)) all seems okay. I had this issue for events, which get lot of updates (cancellations, re-scheduling), so this might somehow trigger the duplicity in the past. I will look for a similar error in future and if it reappears, i will try to investigate - but so far, Outlook Caldav Synchronizer seems to do its part well.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/outlookcaldavsynchronizer#1146
No description provided.