Riepilogo\nI nuovi eventi creati con un fuso orario impostato (timezone="Europe/Berlin" e showLocalTime="true") mostrano l’ora errata con un +1 ora quando si scarica il file .ics e lo si importa in Outlook (Windows). L’ora è corretta nel forum stesso. Sono interessati solo i nuovi eventi, ovvero l’importazione tramite il file .ics.\n\nRiproduzione\n\n1. Creare un evento (oggi, durante l’ora legale CEST/UTC+2): 17:00 – 19:15 ora di Berlino.\n\n\n[event start="2026-08-11 17:00" status="public" name="testevent 2" timezone="Europe/Berlin" showLocalTime="true" end="2026-08-11 19:15"]\n[/event]\n\n\n\n2. “Aggiungi al calendario” → scarica il file .ics.\n3. Importa il file in Outlook.\n\nAttesa: 11.08.2026, 17:00 – 19:15\nReale: 11.08.2026, 18:00 – 20:15 (+1 ora)\n\nContenuto ICS (rilevante):\n\n\nDTSTART;TZID=Europe/Berlin:20260811T170000\nDTEND;TZID=Europe/Berlin:20260811T191500\n\n\n\n*(Il file non contiene un blocco VTIMEZONE per Europe/Berlin.)*\n\nAnalisi / Causa sospettata\nL’esportazione specifica l’ora localmente con TZID=Europe/Berlin (nome IANA) invece che UTC (...Z). Outlook non comprende i nomi dei fusi orari IANA (utilizza identificatori Windows come “W. Europe Standard Time”) e, in assenza di una definizione VTIMEZONE, ricade all’offset fisso UTC+1 (CET/ora invernale). Durante l’ora legale (CEST = UTC+2) questo si traduce esattamente in +1 ora. Verifica incrociata: importando lo stesso file in Google Calendar (che comprende i fusi orari IANA nativamente) viene mostrata l’ora corretta 17:00.\n\nSuggerimento: l’esportazione ICS dovrebbe utilizzare timestamp UTC con Z o generare un blocco VTIMEZONE completo includendo le regole DST (vedere anche la discussione sulla conformità alla specifica ICS in LOCATION non è disponibile nell’esportazione ICS completa).\n\nOsservazione aggiuntiva: Quando lo stesso evento viene creato senzatimezone=/showLocalTime, l’esportazione .ics utilizza UTC e Outlook mostra +2 ore (poiché 17:00 UTC = 19:00 CEST). Questo è il comportamento UTC documentato, ma illustra ulteriormente che la gestione dei fusi orari intorno all’esportazione ICS è confusa per gli utenti che si aspettano orari locali.
Per confronto, ho eseguito il mio host Discourse e il container dell’applicazione nel fuso orario IANA locale invece che in UTC, a causa del comportamento precedente dei fusi orari del calendario.
Questo significa che sia il mio host che il container Discourse utilizzano Europe/London, inclusa la variazione automatica GMT/BST.
Potrebbe valere la pena testare l’equivalente con Europe/Berlin sulla tua installazione per verificare se il file .ics risultante viene importato correttamente in Outlook:
Mi interesserebbe sapere se ciò modifica l’importazione del tuo evento di Berlino delle 17:00, facendola passare dalle 18:00 alle attese 17:00.
Se così fosse, ciò suggerirebbe che il fuso orario di Discourse/container influenza l’esportazione; se non lo fosse, la mancanza di VTIMEZONE/gestione di Outlook è probabilmente indipendente dal fuso orario del server.
Anche noi stiamo riscontrando esattamente questo problema.
Riproduzione:
Evento creato con timezone="Europe/Berlin" e showLocalTime="true", durante il periodo di ora legale (CEST).
Scaricato il file .ics tramite “Aggiungi al calendario” e importato in Outlook.
Risultato effettivo: L’evento viene visualizzato con un’ora di ritardo (ad esempio, le 17:00 ora di Berlino appaiono come le 18:00 in Outlook). Risultato atteso: L’evento dovrebbe mostrare le 17:00, come inserito.
Possiamo confermare che ciò avviene in modo costante, non occasionale, per gli eventi che si verificano durante il periodo CEST. Gli altri eventi al di fuori del periodo CEST non sono interessati.
Saremmo davvero felici di vedere questo problema risolto, poiché i nostri utenti possono essere molto sensibili ai malfunzionamenti
Il problema si trova nell’esportazione ICS, non nel fuso orario del server/contenitore. L’evento esportato utilizza un TZID IANA come Europe/Berlin, ma attualmente non include la definizione corrispondente di VTIMEZONE di cui hanno bisogno client come Outlook per interpretare in modo affidabile le regole dell’ora legale.
La PR aggiunge definizioni VTIMEZONE ai download ICS con supporto per i fusi orari, mantenendo i valori locali esistenti di DTSTART/DTEND.
Per l’esempio in questo topic, l’esportazione ora include le osservanze CET/CEST per Europe/Berlin, quindi:
DTSTART;TZID=Europe/Berlin:20260811T170000
può essere interpretato con il corretto offset estivo UTC+2, anziché far sì che Outlook cada sul fallback UTC+1.
Ho anche aggiunto la copertura per le regole dell’ora legale europee e nordamericane, un caso con offset fisso e le transizioni stagionali più insolite utilizzate da Africa/Casablanca.