タイムゾーンと夏時間 (DST) の扱い
海外とのやりとりで必ず出てくる DST / UTC 変換。日本からの旅行・会議・開発で覚えておくべきルールを実例で整理します。
公開 · 更新 · yuzlrin
主要都市の UTC オフセット
・東京 (JST): UTC+9、DST なし。通年固定。
・ニューヨーク (EST/EDT): 冬 UTC-5、夏 UTC-4。日本との時差は 14h / 13h。
・ロンドン (GMT/BST): 冬 UTC+0、夏 UTC+1。日本との時差は 9h / 8h。
・シドニー (AEST/AEDT): 冬 UTC+10、夏 UTC+11(南半球なので逆)。
Google Calendar / Slack などは自動追従しますが、スクリプトの cron やログ集計は固定 UTC を明示しないとズレる場合があります。
DST 切替日の例 (2026)
・米国東部: 3/8(DST 開始)、11/1(DST 終了)
・欧州 EU: 3/29(DST 開始)、10/25(DST 終了)
・オーストラリア: 4/5(DST 終了、南半球)、10/4(DST 開始)
EU は 2019 年に DST 廃止を議決しましたが実施が延期され、2026 年時点も継続中。
実装時の鉄則
・保存は UTC ISO 8601 (YYYY-MM-DDTHH:mm:ss.sssZ) で統一
・表示時のみユーザーのタイムゾーンに変換(Intl.DateTimeFormat 使用)
・cron / スケジューラはコンテナの TZ 設定に従うので明示する
・「3/8 2:30 AM」のような DST 空白時刻は存在しないので入力バリデーション必須
関連ツール
よくある質問
DST でログの時刻が巻き戻ると検索できない?
ローカル時刻で保存していると DST 終了時に同じ時刻が 2 回出現し順序が壊れます。ログは必ず UTC で保存してください。
JavaScript の Date は DST を扱える?
Date オブジェクト自体は UTC を保持し、toString() 時にローカル TZ で表示します。Intl.DateTimeFormat({ timeZone: 'America/New_York' }) を指定すれば DST も自動追従します。
日本が DST を採用していないのはなぜ?
戦後 GHQ 下で 1948-51 年に実施されたものの、残業増加や健康影響への懸念で廃止。以降ずっと採用されていません。沖縄は緯度が低く DST の節電効果自体が薄い事情もあります。