jkbrzt / rrule

JavaScript library for working with recurrence rules for calendar dates as defined in the iCalendar RFC and more.
https://jkbrzt.github.io/rrule
Other
3.34k stars 513 forks source link

rule returns different data when BYDAY=TH vs not #426

Open sdetweil opened 4 years ago

sdetweil commented 4 years ago

Reporting an issue

Thank you for taking an interest in rrule! Please include the following in your report:

have a rule that is created by google calendar, whole day event, every thursday (starting on a thursday 0ct 22, 2020) the calendar event shows two days , 1022, 1023 with the BYDAY=TH, i rule.between(now, year from now, null, null) ics

CREATED:20201001T205859Z
DTEND;VALUE=DATE:20201023
DTSTAMP:20201001T205900Z
DTSTART;VALUE=DATE:20201022
LAST-MODIFIED:20201001T205859Z
RRULE:FREQ=WEEKLY;COUNT=3;INTERVAL=3;BYDAY=TH
SEQUENCE:2
SUMMARY:3-weekly whole day - bad
UID:D718FE41-FF1B-43F6-9442-E9E43A41CCF1
URL;VALUE=URI:
END:VEVENT

event after node-ical (0.12.1) parse

event={"type":"VEVENT","params":[],"created":"2020-10-01T20:58:59.000Z","end":"2020-10-22T22:00:00.000Z","dtstamp":"2020-10-01T20:59:00.000Z","start":"2020-10-21T22:00:00.000Z","datetype":"date","lastmodified":"2020-10-01T20:58:59.000Z","rrule":{"_cache":{"all":false,"before":[],"after":[],"between":[]},"origOptions":{"dtstart":"2020-10-21T22:00:00.000Z","freq":2,"count":3,"interval":3,"byweekday":[{"weekday":3}]},"options":{"freq":2,"dtstart":"2020-10-21T22:00:00.000Z","interval":3,"wkst":0,"count":3,"until":null,"bysetpos":null,"bymonth":null,"bymonthday":[],"bynmonthday":[],"byyearday":null,"byweekno":null,"byweekday":[3],"bynweekday":null,"byhour":[22],"byminute":[0],"bysecond":[0],"byeaster":null}},"sequence":"2","summary":"3-weekly whole day - bad","uid":"D718FE41-FF1B-43F6-9442-E9E43A41CCF1","url":{"params":{"VALUE":"URI"},"val":""}}

return from rule.between (local = 10/23/2020:00:00:00)
[2020-10-06 20:09:44.165] [LOG]    title=undefined dates=["2020-10-22T22:00:00.000Z","2020-11-12T22:00:00.000Z","2020-12-03T22:00:00.000Z"]

returns array of 3 events, using the second day + tz offset = second day

without the BYDAY=TH, returns the 1st day of the 2 days ics

BEGIN:VEVENT
CREATED:20201001T205869Z
DTEND;VALUE=DATE:20201023
DTSTAMP:20201001T205900Z
DTSTART;VALUE=DATE:20201022
LAST-MODIFIED:20201001T205860Z
RRULE:FREQ=WEEKLY;COUNT=3;INTERVAL=3
SEQUENCE:1
SUMMARY:3-weekly whole day - good
UID:D718FE41-FF1B-43F6-9442-E9E43A41CCF0
URL;VALUE=URI1:
END:VEVENT

event after node-ical (0.12.1) parse

event={"type":"VEVENT","params":[],"created":"2020-10-01T20:59:09.000Z","end":"2020-10-22T22:00:00.000Z","dtstamp":"2020-10-01T20:59:00.000Z","start":"2020-10-21T22:00:00.000Z","datetype":"date","lastmodified":"2020-10-01T20:59:00.000Z","rrule":{"_cache":{"all":false,"before":[],"after":[],"between":[]},"origOptions":{"dtstart":"2020-10-21T22:00:00.000Z","freq":2,"count":3,"interval":3},"options":{"freq":2,"dtstart":"2020-10-21T22:00:00.000Z","interval":3,"wkst":0,"count":3,"until":null,"bysetpos":null,"bymonth":null,"bymonthday":[],"bynmonthday":[],"byyearday":null,"byweekno":null,"byweekday":[2],"bynweekday":null,"byhour":[22],"byminute":[0],"bysecond":[0],"byeaster":null}},"sequence":"1","summary":"3-weekly whole day - good","uid":"D718FE41-FF1B-43F6-9442-E9E43A41CCF0","url":{"params":{"VALUE":"URI1"},"val":""}}

returns array of 3 events, using the first day + tz offset = first day, (local = 10/22/2020:00:00:00)
[2020-10-06 20:09:44.182] [LOG]    title=undefined dates=["2020-10-21T22:00:00.000Z","2020-11-11T22:00:00.000Z","2020-12-02T22:00:00.000Z"]

rrule-fail.txt rrule-fail rrule-fail.ics.txt