Thanks for your reply, I think this should be a bug report.
I'm currently working on a multi-platform calendar and planner sharing tool. As the calendar software on every Apple device does, people can sync their calendars using iCloud and use that to share their calendars with others in the form of public links. RFC 5545, also known as iCalendar, is the standard for exchanging information for these functions.
Typically, a simple event implementation would look like this (according to 3.6.1. Event Component)
BEGIN:VEVENT
UID:some unique numbers
SUMMARY:things to be happened
DTSTART;TZID=Asia/Singapore:20240301T100000
DTEND;TZID=Asia/Singapore:20240301T120000
END:VEVENT
The above describes a two-hour schedule.
However, not everything is a one-time event, and sometimes the event may need to be repeated at regular intervals, so it is possible to repeat it at regular intervals according to the rules of 3.8.5.3 Recurrence Rule
, and there are also EXRULE tags for excluding a date (Section 4.8.5.2 in RFC 2445, but recorded as deprecated), as well as 3.8.5.1 Exception Date-Times
, which excludes dates at individual times, and 3.8.5.2 Recurrence Date-Times,
which repeats dates at individual times.
I discovered during development that when a user clicks the webcal://
link we provide and adds a calendar subscription to the calendar software on an Apple device, the information containing the RDATE tag will not show subsequent recurrences.
As in the example above, if you add either of the following, it will not work
RDATE:20240301T123000Z
(always in UTC time zone)
RDATE;TZID=Asia/Singapore:20240302T190000
(in the time zone of the TZID)
i.e. both iOS and MacOS calendars will only show the first day at 10am.
But if you repeat it like this
RRULE:FREQ=DAILY;COUNT=10
the calendar on all devices will show the first day and the next nine days.
Similarly, with EXDATE, a particular repeat can be cancelled without changing the original end of the cycle.
What I'm saying is that the calendar software on all Apple devices does not fully implement RFC 5545, or that there is a bug in the handling of the RDATE tag.
Although it does not use the API provided by the operating system, the standard is a common standard for storage and exchange across multiple operating systems and calendars, and the tags I mentioned have been in place since the previous version of RFC 5545, RFC 2445, published in 1998, so the posting of the above problem shouldn't be taken as a suggestion for enhancement.