nextcloud / calendar

📆 Calendar app for Nextcloud
https://apps.nextcloud.com/apps/calendar
GNU Affero General Public License v3.0
985 stars 239 forks source link

Reccurent event always starts today #6425

Closed sanpii closed 1 month ago

sanpii commented 1 month ago

Steps to reproduce

  1. Create a recurrent event (with thunderbird in my case);
  2. Get the ics ressource with a recurrent event planned for tomorrow.

Expected behavior

The DTSTART attribute should be the date of the recurring instance.

Actual behaviour

The DTSTART attribute is always the creation date.

```xml BEGIN:VCALENDAR PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Paris X-TZINFO:Europe/Paris[2024a] BEGIN:STANDARD TZOFFSETTO:+000000 TZOFFSETFROM:+000921 TZNAME:Europe/Paris(STD) DTSTART:19110311T000000 RDATE:19110311T000000 END:STANDARD BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000 TZNAME:Europe/Paris(DST) DTSTART:19160614T230000 RDATE:19160614T230000 END:DAYLIGHT BEGIN:STANDARD TZOFFSETTO:+000000 TZOFFSETFROM:+010000 TZNAME:Europe/Paris(STD) DTSTART:19161002T000000 RDATE:19161002T000000 END:STANDARD BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000 TZNAME:Europe/Paris(DST) DTSTART:19170324T230000 RDATE:19170324T230000 END:DAYLIGHT BEGIN:STANDARD TZOFFSETTO:+000000 TZOFFSETFROM:+010000 TZNAME:Europe/Paris(STD) DTSTART:19171008T000000 RDATE:19171008T000000 END:STANDARD BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000 TZNAME:Europe/Paris(DST) DTSTART:19180309T230000 RDATE:19180309T230000 END:DAYLIGHT BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000 TZNAME:Europe/Paris(DST) DTSTART:19190301T230000 RDATE:19190301T230000 END:DAYLIGHT BEGIN:STANDARD TZOFFSETTO:+000000 TZOFFSETFROM:+010000 TZNAME:Europe/Paris(STD) DTSTART:19181007T000000 RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1MO;UNTIL=19191006T000000 END:STANDARD BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000 TZNAME:Europe/Paris(DST) DTSTART:19200214T230000 RDATE:19200214T230000 END:DAYLIGHT BEGIN:STANDARD TZOFFSETTO:+000000 TZOFFSETFROM:+010000 TZNAME:Europe/Paris(STD) DTSTART:19201024T000000 RDATE:19201024T000000 END:STANDARD BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000 TZNAME:Europe/Paris(DST) DTSTART:19210314T230000 RDATE:19210314T230000 END:DAYLIGHT BEGIN:STANDARD TZOFFSETTO:+000000 TZOFFSETFROM:+010000 TZNAME:Europe/Paris(STD) DTSTART:19211026T000000 RDATE:19211026T000000 END:STANDARD BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000 TZNAME:Europe/Paris(DST) DTSTART:19220325T230000 RDATE:19220325T230000 END:DAYLIGHT BEGIN:STANDARD TZOFFSETTO:+000000 TZOFFSETFROM:+010000 TZNAME:Europe/Paris(STD) DTSTART:19221008T000000 RDATE:19221008T000000 END:STANDARD BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000 TZNAME:Europe/Paris(DST) DTSTART:19230526T230000 RDATE:19230526T230000 END:DAYLIGHT BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000 TZNAME:Europe/Paris(DST) DTSTART:19240329T230000 RDATE:19240329T230000 END:DAYLIGHT BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000 TZNAME:Europe/Paris(DST) DTSTART:19250404T230000 RDATE:19250404T230000 END:DAYLIGHT BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000 TZNAME:Europe/Paris(DST) DTSTART:19260417T230000 RDATE:19260417T230000 END:DAYLIGHT BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000 TZNAME:Europe/Paris(DST) DTSTART:19270409T230000 RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=2SA;UNTIL=19280414T230000 END:DAYLIGHT BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000 TZNAME:Europe/Paris(DST) DTSTART:19290420T230000 RDATE:19290420T230000 END:DAYLIGHT BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000 TZNAME:Europe/Paris(DST) DTSTART:19300412T230000 RDATE:19300412T230000 END:DAYLIGHT BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000 TZNAME:Europe/Paris(DST) DTSTART:19310418T230000 RDATE:19310418T230000 END:DAYLIGHT BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000 TZNAME:Europe/Paris(DST) DTSTART:19320402T230000 RDATE:19320402T230000 END:DAYLIGHT BEGIN:STANDARD TZOFFSETTO:+000000 TZOFFSETFROM:+010000 TZNAME:Europe/Paris(STD) DTSTART:19231007T000000 RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19321002T000000 END:STANDARD BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000 TZNAME:Europe/Paris(DST) DTSTART:19330325T230000 RDATE:19330325T230000 END:DAYLIGHT BEGIN:STANDARD TZOFFSETTO:+000000 TZOFFSETFROM:+010000 TZNAME:Europe/Paris(STD) DTSTART:19331008T000000 RDATE:19331008T000000 END:STANDARD BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000 TZNAME:Europe/Paris(DST) DTSTART:19340407T230000 RDATE:19340407T230000 END:DAYLIGHT BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000 TZNAME:Europe/Paris(DST) DTSTART:19350330T230000 RDATE:19350330T230000 END:DAYLIGHT BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000 TZNAME:Europe/Paris(DST) DTSTART:19360418T230000 RDATE:19360418T230000 END:DAYLIGHT BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000 TZNAME:Europe/Paris(DST) DTSTART:19370403T230000 RDATE:19370403T230000 END:DAYLIGHT BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000 TZNAME:Europe/Paris(DST) DTSTART:19380326T230000 RDATE:19380326T230000 END:DAYLIGHT BEGIN:STANDARD TZOFFSETTO:+000000 TZOFFSETFROM:+010000 TZNAME:Europe/Paris(STD) DTSTART:19341007T000000 RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19381002T000000 END:STANDARD BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000 TZNAME:Europe/Paris(DST) DTSTART:19390415T230000 RDATE:19390415T230000 END:DAYLIGHT BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+000000 TZNAME:Europe/Paris(DST) DTSTART:19400225T020000 RDATE:19400225T020000 END:DAYLIGHT BEGIN:STANDARD TZOFFSETTO:+000000 TZOFFSETFROM:+010000 TZNAME:Europe/Paris(STD) DTSTART:19391119T000000 RDATE:19391119T000000 END:STANDARD BEGIN:DAYLIGHT TZOFFSETTO:+020000 TZOFFSETFROM:+010000 TZNAME:Europe/Paris(DST) DTSTART:19400614T230000 RDATE:19400614T230000 END:DAYLIGHT BEGIN:STANDARD TZOFFSETTO:+010000 TZOFFSETFROM:+020000 TZNAME:Europe/Paris(STD) DTSTART:19421102T030000 RDATE:19421102T030000 END:STANDARD BEGIN:DAYLIGHT TZOFFSETTO:+020000 TZOFFSETFROM:+010000 TZNAME:Europe/Paris(DST) DTSTART:19430329T020000 RDATE:19430329T020000 END:DAYLIGHT BEGIN:DAYLIGHT TZOFFSETTO:+020000 TZOFFSETFROM:+010000 TZNAME:Europe/Paris(DST) DTSTART:19440403T020000 RDATE:19440403T020000 END:DAYLIGHT BEGIN:DAYLIGHT TZOFFSETTO:+020000 TZOFFSETFROM:+020000 TZNAME:Europe/Paris(DST) DTSTART:19440825T000000 RDATE:19440825T000000 END:DAYLIGHT BEGIN:DAYLIGHT TZOFFSETTO:+010000 TZOFFSETFROM:+020000 TZNAME:Europe/Paris(DST) DTSTART:19441008T010000 RDATE:19441008T010000 END:DAYLIGHT BEGIN:STANDARD TZOFFSETTO:+010000 TZOFFSETFROM:+020000 TZNAME:Europe/Paris(STD) DTSTART:19431004T030000 RDATE:19431004T030000 END:STANDARD BEGIN:DAYLIGHT TZOFFSETTO:+020000 TZOFFSETFROM:+010000 TZNAME:Europe/Paris(DST) DTSTART:19450402T020000 RDATE:19450402T020000 END:DAYLIGHT BEGIN:STANDARD TZOFFSETTO:+010000 TZOFFSETFROM:+020000 TZNAME:Europe/Paris(STD) DTSTART:19450916T030000 RDATE:19450916T030000 END:STANDARD BEGIN:DAYLIGHT TZOFFSETTO:+020000 TZOFFSETFROM:+010000 TZNAME:Europe/Paris(DST) DTSTART:19760328T010000 RDATE:19760328T010000 END:DAYLIGHT BEGIN:STANDARD TZOFFSETTO:+010000 TZOFFSETFROM:+020000 TZNAME:Europe/Paris(STD) DTSTART:19760926T010000 RDATE:19760926T010000 END:STANDARD BEGIN:STANDARD TZOFFSETTO:+010000 TZOFFSETFROM:+020000 TZNAME:Europe/Paris(STD) DTSTART:19770925T030000 RDATE:19770925T030000 END:STANDARD BEGIN:STANDARD TZOFFSETTO:+010000 TZOFFSETFROM:+020000 TZNAME:Europe/Paris(STD) DTSTART:19781001T030000 RDATE:19781001T030000 END:STANDARD BEGIN:DAYLIGHT TZOFFSETTO:+020000 TZOFFSETFROM:+010000 TZNAME:Europe/Paris(DST) DTSTART:19770403T020000 RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU;UNTIL=19800406T020000 END:DAYLIGHT BEGIN:STANDARD TZOFFSETTO:+010000 TZOFFSETFROM:+020000 TZNAME:Europe/Paris(STD) DTSTART:19790930T030000 RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU;UNTIL=19950924T030000 END:STANDARD BEGIN:DAYLIGHT TZOFFSETTO:+020000 TZOFFSETFROM:+010000 TZNAME:Europe/Paris(DST) DTSTART:19810329T020000 RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19960331T020000 END:DAYLIGHT BEGIN:STANDARD TZOFFSETTO:+010000 TZOFFSETFROM:+020000 TZNAME:Europe/Paris(STD) DTSTART:19961027T030000 RDATE:19961027T030000 END:STANDARD BEGIN:DAYLIGHT TZOFFSETTO:+020000 TZOFFSETFROM:+010000 TZNAME:(DST) DTSTART:19970330T020000 RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU END:DAYLIGHT BEGIN:STANDARD TZOFFSETTO:+010000 TZOFFSETFROM:+020000 TZNAME:(STD) DTSTART:19971026T030000 RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU END:STANDARD END:VTIMEZONE BEGIN:VEVENT CREATED:20241011T065458Z LAST-MODIFIED:20241011T065512Z DTSTAMP:20241011T065512Z UID:df17d9b2-1ed9-4587-9e90-6e0e0b2b9262 SUMMARY:Recurrent event RRULE:FREQ=WEEKLY;UNTIL=20250903T130000Z DTSTART;TZID=Europe/Paris:20241009T150000 DTEND;TZID=Europe/Paris:20241009T170000 TRANSP:OPAQUE END:VEVENT END:VCALENDAR ```

Calendar app version

5.0.1

CalDAV-clients used

wget

Browser

No response

Client operating system

No response

Server operating system

Debian

Web server

None

Database engine version

PostgreSQL

PHP engine version

PHP 8.2

Nextcloud version

30.0.0

Updated from an older installed version or fresh install

Updated from an older version

List of activated apps

No response

Nextcloud configuration

No response

Web server error log

No response

Log file

No response

Browser log

No response

Additional info

No response

sanpii commented 1 month ago

After investigation, it's not a bug.

rfc5545:

The "DTSTART" property for a "VEVENT" specifies the inclusive start of the event. For recurring events, it also specifies the very first instance in the recurrence set.