バージョン: Discourse 2026.1.5 (ESR), discourse-calendar プラグイン
概要
タイムゾーンを指定して作成された新しいイベント(timezone="Europe/Berlin" および showLocalTime="true")は、.ics ファイルをダウンロードして Outlook (Windows) にインポートした際、+1時間 の誤った時刻が表示されます。フォーラム内での表示は正しい時刻です。影響を受けるのは、.ics ファイルを介したインポートによる新しいイベントのみです。
再現手順
- イベントを作成します(本日、夏時間 CEST/UTC+2 中):ベルリン時間 17:00 – 19:15。
[event start="2026-08-11 17:00" status="public" name="testevent 2" timezone="Europe/Berlin" showLocalTime="true" end="2026-08-11 19:15"]
[/event]
- 「カレンダーに追加」→
.icsファイルをダウンロードします。 - ファイルを Outlook にインポートします。
期待される結果: 2026年8月11日、17:00 – 19:15
実際の結果: 2026年8月11日、18:00 – 20:15 (+1時間)
ICS コンテンツ(関連部分):
DTSTART;TZID=Europe/Berlin:20260811T170000
DTEND;TZID=Europe/Berlin:20260811T191500
(ファイルには Europe/Berlin の VTIMEZONE ブロックが含まれていません。)
分析 / 推測される原因
エクスポートは、UTC(...Z)ではなく IANA 名称の TZID=Europe/Berlin を使用してローカル時刻を指定しています。Outlook は IANA タイムゾーン名を理解せず(「W. Europe Standard Time」などの Windows 識別子を使用します)、VTIMEZONE 定義がない場合、固定オフセット UTC+1 (CET/冬時間) にフォールバックします。夏時間(CEST = UTC+2)中では、これにより正確に +1時間 のずれが生じます。クロスチェック:同じファイルを IANA タイムゾーンをネイティブに理解する Google カレンダーにインポートすると、正しい 17:00 が表示されます。
提案:ICS エクスポートは、Z を付けた UTC タイムスタンプを使用するか、DST ルールを含む完全な VTIMEZONE ブロックを生成すべきです(LOCATION is not available in full ICS export における ICS 仕様の準拠に関する議論も参照)。*
追加の観察: 同じイベントを timezone=/showLocalTime なし で作成した場合、エクスポートされた .ics は UTC を使用し、Outlook は +2時間 を表示します(17:00 UTC = 19:00 CEST であるため)。これは文書化されている UTC の動作ですが、ローカル時刻を期待するユーザーにとって、ICS エクスポート周辺のタイムゾーン処理が混乱を招いていることをさらに示しています。