dengste / org-caldav

Caldav sync for Emacs orgmode
GNU General Public License v3.0
712 stars 105 forks source link

Calendar events before 1970 are not synced properly #291

Closed nuthub closed 7 months ago

nuthub commented 8 months ago

When syncing my Nextcloud's contact birthday calendar, birthdays before 1970-01-01 are created in org with 1970 and correct month and day.

Example: someone's birthday is 1968-09-24. In org it is created as 1970-09-24.

nuthub commented 7 months ago

well, using unix timestamp is not an issue per se, since you can express dates before 1970/01/01 by using negative integers (or whatever data type one uses to store the timestamp)

However, I had a look into an ics file that nextcloud creates for a birthday <1970. And the date of the calendar entry is indeed set to 1970-mm-dd instead of the actual year. The actual year of birthday is put in brackets into the events SUMMARY and DESCRIPTION fields, e.g. "John Doe (1950)" and in an vendor specific field X-NEXTCLOUD-BC-YEAR.

I think, taking care for vendor specific fields is not in scope of org-caldav.

So this seems to be a Nextcloud issue. The question remains, why doesn't nextcloud create the event as close as possible to the actual year of the birthday. ( considering the boundaries of the used data type)

I'm closing this issue here.

For reference, this is how a 1950(-10-05) birthday looks like:

BEGIN:VCALENDAR
VERSION:2.0
CALSCALE:GREGORIAN
PRODID:-//IDN nextcloud.com//Birthday calendar//EN
BEGIN:VEVENT
DTSTAMP:20210215T155140Z
DTSTART;VALUE=DATE:19701005
DTEND;VALUE=DATE:19701006
UID:66cc4c1b-d36e-4eaf-a392-cedcf50ea06a
RRULE:FREQ=YEARLY
SUMMARY:🎂 John Doe (1950)
TRANSP:TRANSPARENT
X-NEXTCLOUD-BC-FIELD-TYPE:BDAY
X-NEXTCLOUD-BC-UNKNOWN-YEAR:0
X-NEXTCLOUD-BC-YEAR:1950
BEGIN:VALARM
TRIGGER;VALUE=DURATION:-PT0M
ACTION:DISPLAY
DESCRIPTION:🎂 John Doe (1950)
END:VALARM
END:VEVENT
END:VCALENDAR