Replies: 1 comment
-
|
Environment
Summary FYI, #849 (“ICS calendar timezone conversion for non-IANA timezones”) fixed the previous +2h issue for Why this date matters
Expected
Actual
Additional observations
Minimal ICS to reproduce What I’ve tried
Hypothesis Request
Nice-to-have feature Workarounds (for other users)
Thanks a lot! |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Environment
Summary
Since the recent change related to “local time,” ICS events that include a TZID (e.g.
Europe/Zurich) are rendered +2h ahead in the TaskNotes calendar views.Example: an event 09:45–10:45 in Europe/Zurich appears as 11:45–12:45 in TaskNotes.
This did not happen before; after the last fix following my previous report, “local time” stopped working for me and the +2h offset appeared systematically.
Minimal ICS sample
Expected vs Actual
TZID=Europe/Zurich).What I’ve already tried (local tests/patches)
To help pinpoint the root cause, I tested several focused changes locally (without success end-to-end):
Avoid forcing UTC in ICS → Date conversion
icalTimeToISOString(...)ended withreturn new Date(unix*1000).toISOString().Dateobject instead of.toISOString()(so noZ).Don’t append
Zin “floating” parserstatic parseICSDate(t), the minified code appendedZin a template literal.Zso that floating/local times stay local.FullCalendar timezone
timeZonetoEurope/Zurich(and also triedlocal) on the TaskNotes calendar instance.Event-level transforms
eventDataTransformthat converts any ICS event whosestart/endend withZinto localDateobjects (stripZ, usenew Date(…)).getAllEvents()to normalize ICSstart/end.Direct event-construction point
At the point where TaskNotes builds the FullCalendar event objects with
extendedProps:{ eventType:"ics", icsEvent:... }, I replaced:with conditional conversion from
"...Z"→new Date(...).Result: still +2h in the final render in my setup.
Hypothesis
Some ICS code path still converts the localized ICS time (
TZID=Europe/Zurich) into an ISO string withZ(UTC), which FullCalendar then re-displays in the local browser zone, adding +02:00 and causing the visible shift. This likely happens after recurrence expansion or in a code path not covered by the simpletoISOString()/parseICSDateedits above.How to reproduce (on my side)
DTSTART;TZID=Europe/Zurich:20251013T094500.Useful console checks (dev tools)
My browser environment reports:
Intl.DateTimeFormat().resolvedOptions().timeZone→Europe/Zurichnew Date().getTimezoneOffset()→-120(during DST)In my tests, some calls to the internal ICS service returned 0 items depending on the view lifecycle, but the rendered calendar still showed the +2h.
Request
Could you please review the ICS → event pipeline to ensure that:
...Zunless truly UTC.2025-10-13T09:45:00+02:00) or plainDateobjects, rather than.toISOString()(which forcesZ).timeZone(localor the user’s IANA zone) and that later transforms don’t override it.If there’s a known fix planned for v4 that touches ICS/TZ handling, I’m happy to test a beta (e.g., via BRAT). Otherwise I can test a small patch on 3.25.x.
Thanks a lot! I can provide additional logs or test builds if that helps.
Beta Was this translation helpful? Give feedback.
All reactions