Welcome, Guest
Please Login or Register.    Lost Password?

EXDATE not used correct by Rainlendar
(1 viewing) (1) Guest
Go to bottomPage: 1
TOPIC: EXDATE not used correct by Rainlendar
#21016
EXDATE not used correct by Rainlendar 5 Months, 1 Week ago  
Hey.

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

Problem:
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:

EXDATE;VALUE=DATE:20140412

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:

EXDATE:20140412T180000Z

Rainlendar will though, understand all these and use them (no matter if its an all-day or hour based event) to exclude dates:

EXDATE:20140411T180000Z
EXDATE:20140411
EXDATE;VALUE=DATE:20140411

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.
tannyl
Fresh Boarder
Posts: 3
graphgraph
User Offline Click here to see the profile of this user
The administrator has disabled public write access.
 
#21017
Re:EXDATE not used correct by Rainlendar 5 Months, 1 Week ago  
This is what Marten, the guy behind CalDAV-Sync wrote in that comment:

Please open this bug again! Who says this is RFC 2445 compliant? Have you ever thought about this issue?

Yes, VALUE=DATE is valid for EXDATE, but only for all-day events, not for DATE-TIME events. I know that RFC 2445 is not clear about that, but it takes just a minute to understand that a VALUE=DATE EXDATE in combination to a VALUE=DATE-TIME DTSTART won't work.

Just consider a daily repeating event (e.g. a conference call) with
DTSTART;TZID=Europe/Berlin:20120105T030000
and
EXDATE;VALUE=DATE:20120110

What would happen if someone in New York get's this invitation? He would take his telephone on 2012-01-09 at 9:00 pm and dial the conference number but no one in Berlin would join in since it's already Jan 10th in Berlin. On the next day the guys in Berlin would join the conference call but the guy in New York would be absent.

Remember VALUE=DATE means the date is floating and always in local time!

This combination of DATE and DATE-TIME values is ambiguous. The specs say that the type of the DTSTART and the DTEND value must match. I guess it should be clear now that this is true for EXDATE as well, just like it is for RECURRENCEID and the original instance's DTSTART.

An EXDATE is pointless if it doesn't specify the exact instance that is excluded. You should think of an EXDATE as some kind of RECURRENCEID for events that don't take place.

That's the reason that no other client creates VALUE=DATE EXDATEs unless the event is an all-day event.
tannyl
Fresh Boarder
Posts: 3
graphgraph
User Offline Click here to see the profile of this user
The administrator has disabled public write access.
 
#21019
Re:EXDATE not used correct by Rainlendar 5 Months, 1 Week ago  
Makes sense. I'll see if this could be fixed in Rainlendar.
Rainy
Moderator
Posts: 5960
graph
User Offline Click here to see the profile of this user
The administrator has disabled public write access.
 
#21023
Re:EXDATE not used correct by Rainlendar 5 Months, 1 Week ago  
Sounds great. Thanks.

I'll gladly help test.
tannyl
Fresh Boarder
Posts: 3
graphgraph
User Offline Click here to see the profile of this user
The administrator has disabled public write access.
 
Go to topPage: 1
get the latest posts directly to your desktop