First of all. Thanks for making this wonderful calendar.
Now on to business.
Rainlendar does not store EXDATE values correctly. For those who don't know, EXDATE is an excluded date and or date-time in an recurring event.
Let me start with some background:
1: I have an LG G2 smartphone with Android 4.4.
2: I use CalDAV-Sync to sync my calendars with a CalDAV server.
3: I have am running my own CalDAV/CardDAV using Baikal.
4: I have started using Rainlendar as my desktop calendar, instead of Thunderbird with Lightning
When I exclude dates in Rainlendar on an recurring event (not an all day event) and sync these changes to my smartphone via CalDAV-Sync, the excluded dates still show up as included. If I exclude dates on my smartphone, sync with CalDAV-Sync and then sync Rainlendar, Rainlendar will exclude these days correctly.
Why this happens:
First I thought this was a problem with CalDAV-Sync, but after talking with maker of that application, it turned out that its the way Rainlendar handles EXDATES that the problem.
When Rainlendar saves an EXDATE it, as far as I know, always saves it like this:
It saves the EXDATE value as a DATE and not as the default (for EXDATE) DATE-TIME. Correctly enough it adds the parameter VALUE and sets it to =DATE, when it does this.
The problem is that Rainlendar saves EXDATE like this for both "all-day" events and normal events.
While its correct to store it like this for an all-day event, using the DATE value, its not correct for normal events.
Instead it should use DATE-TIME as the value for EXDATE, and store both the date and the time of the event that is to be excluded.
So if I have an event thats from 18 to 20 each day, it should store EXDATE as this:
Rainlendar will though, understand all these and use them (no matter if its an all-day or hour based event) to exclude dates:
But CalDAV-Sync is more strict, and needs the EXDATE value to be the correct type.
Its true this is not 100% clear in the specifications for the iCalendar standard, but if you read though it, it will make sense, that it works like this.
Marten (guy behind CalDAV-Syncs) wrote an explanation about EXDATE here(comment 3, the same problem was or is in KOrganizer):
Want to add a link here, but cant due to forum spam rules
I am of course ready to be proved wrong.