diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ce2668ba3..1d1a004c0b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,6 +35,7 @@ planned for 2025-04-01 - [calendar] Fix arrayed symbols, #3267, again, add testcase, add testcase for #3678 - [weather] Fix wrong weatherCondition name in openmeteo provider which lead to n/a icon (#3691) - [core] Fix wrong port in log message when starting server only (#3696) +- [calendar] NewYork event processed on system in Central timezone shows wrong time #3701 ## [2.30.0] - 2025-01-01 diff --git a/modules/default/calendar/calendarfetcherutils.js b/modules/default/calendar/calendarfetcherutils.js index b89f5962c2..df567af4f6 100644 --- a/modules/default/calendar/calendarfetcherutils.js +++ b/modules/default/calendar/calendarfetcherutils.js @@ -662,9 +662,11 @@ const CalendarFetcherUtils = { Log.debug("signs are the same"); if (Math.sign(eventDiff) === -1) { //if west, looking at more west + // -350 <-300 if (nowDiff < eventDiff) { //-600 -420 - eventDiff = -(eventDiff - (nowDiff - eventDiff)); //-180 + //300 -300 -360 +300 + eventDiff = nowDiff - eventDiff; //-180 Log.debug("now looking back east delta diff=", eventDiff); } else { diff --git a/tests/configs/modules/calendar/chicago-looking-at-ny-recurring.js b/tests/configs/modules/calendar/chicago-looking-at-ny-recurring.js new file mode 100644 index 0000000000..1cab2375d6 --- /dev/null +++ b/tests/configs/modules/calendar/chicago-looking-at-ny-recurring.js @@ -0,0 +1,33 @@ +let config = { + address: "0.0.0.0", + ipWhitelist: [], + + timeFormat: 24, + modules: [ + { + module: "calendar", + position: "bottom_bar", + config: { + fade: false, + urgency: 0, + dateFormat: "Do.MMM, HH:mm", + fullDayEventDateFormat: "Do.MMM", + timeFormat: "absolute", + getRelative: 0, + maximumNumberOfDays: 28, + showEnd: true, + calendars: [ + { + maximumEntries: 100, + url: "http://localhost:8080/tests/mocks/chicago-nyedge.ics" + } + ] + } + } + ] +}; + +/*************** DO NOT EDIT THE LINE BELOW ***************/ +if (typeof module !== "undefined") { + module.exports = config; +} diff --git a/tests/electron/modules/calendar_spec.js b/tests/electron/modules/calendar_spec.js index 6143d29a36..0f8ee5803b 100644 --- a/tests/electron/modules/calendar_spec.js +++ b/tests/electron/modules/calendar_spec.js @@ -253,6 +253,11 @@ describe("Calendar module", () => { // just await expect(doTestTableContent(".calendar .event", ".time", "29th.Oct, 05:00-30th.Oct, 18:00", first)).resolves.toBe(true); }); + it("viewing from further west in diff timezones", async () => { + await helpers.startApplication("tests/configs/modules/calendar/chicago-looking-at-ny-recurring.js", "22 Jan 2025 14:30:00 GMT-06:00", [], "America/Chicago"); + // just + await expect(doTestTableContent(".calendar .event", ".time", "22nd.Jan, 17:30-19:30", first)).resolves.toBe(true); + }); }); describe("one event non repeating", () => { diff --git a/tests/mocks/chicago-nyedge.ics b/tests/mocks/chicago-nyedge.ics new file mode 100644 index 0000000000..641ff022d2 --- /dev/null +++ b/tests/mocks/chicago-nyedge.ics @@ -0,0 +1,15 @@ +BEGIN:VEVENT +DTSTART;TZID=America/New_York:20240918T183000 +DTEND;TZID=America/New_York:20240918T203000 +RRULE:FREQ=WEEKLY;BYDAY=WE +EXDATE;TZID=America/New_York:20241127T183000 +EXDATE;TZID=America/New_York:20241225T183000 +DTSTAMP:20250122T045443Z +UID:_@google.com +CREATED:20240916T131843Z +LAST-MODIFIED:20241222T235014Z +SEQUENCE:0 +STATUS:CONFIRMED +SUMMARY:Derby +TRANSP:OPAQUE +END:VEVENT \ No newline at end of file