Version: Discourse 2026.1.5 (ESR), discourse-calendar plugin
Summary
New events created with a set timezone (timezone="Europe/Berlin" and showLocalTime="true") show the wrong time by +1 hour when downloading the .ics file and importing it into Outlook (Windows). The time is correct in the forum itself. Only new events are affected, i.e. the import via the .ics file.
Reproduction
- Create an event (today, in daylight saving time CEST/UTC+2): 5:00 PM – 7:15 PM Berlin time.
[event start="2026-08-11 17:00" status="public" name="testevent 2" timezone="Europe/Berlin" showLocalTime="true" end="2026-08-11 19:15"]
[/event]
- “Add to calendar” → download the
.icsfile. - Import the file into Outlook.
Expected: 11.08.2026, 17:00 – 19:15
Actual: 11.08.2026, 18:00 – 20:15 (+1 hour)
ICS content (relevant):
DTSTART;TZID=Europe/Berlin:20260811T170000
DTEND;TZID=Europe/Berlin:20260811T191500
(The file does not contain a VTIMEZONE block for Europe/Berlin.)
Analysis / Suspected cause
The export specifies the time locally with TZID=Europe/Berlin (IANA name) instead of UTC (...Z). Outlook doesn’t understand IANA timezone names (it uses Windows identifiers such as “W. Europe Standard Time”) and, without a VTIMEZONE definition, falls back to the fixed offset UTC+1 (CET/winter time). During summer time (CEST = UTC+2) this results in exactly +1 hour. Cross-check: importing the same file into Google Calendar (which understands IANA timezones natively) shows the correct 17:00.
Suggestion: the ICS export should either use UTC timestamps with Z or generate a complete VTIMEZONE block including DST rules (see also the discussion on ICS spec adherence in LOCATION is not available in full ICS export).
Additional observation: When the same event is created without timezone=/showLocalTime, the exported .ics uses UTC and Outlook shows +2 hours (since 17:00 UTC = 19:00 CEST). This is the documented UTC behavior, but it further illustrates that the timezone handling around the ICS export is confusing for users expecting local times.