タイムゾーンと夏時間 (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 終了)
・シドニー(NSW): 4/5(DST 終了)、10/4(DST 開始)。オーストラリア全域で同じ日程ではありません。
EUの季節的な時刻変更について、欧州議会は2019年に廃止提案への立場を採択しましたが、理事会との合意は成立しておらず、廃止が発効したわけではありません。現行の日程と制度は欧州委員会の公式情報で確認してください。
実装時の鉄則
・保存は UTC ISO 8601 (YYYY-MM-DDTHH:mm:ss.sssZ) で統一
・表示時のみユーザーのタイムゾーンに変換(例: new Intl.DateTimeFormat(undefined, { timeZone: 'America/New_York' }))
・cron / スケジューラは対象実装のタイムゾーン設定を確認する(CronieのCRON_TZ、コマンドのTZ、daemonのログ時刻は区別)
・「3/8 2:30 AM」のような DST 空白時刻は存在しないので入力バリデーション必須
関連ツール
よくある質問
DST でログの時刻が巻き戻ると検索できない?
ローカル時刻で保存していると DST 終了時に同じ時刻が 2 回出現し順序が壊れます。ログは必ず UTC で保存してください。
JavaScript の Date は DST を扱える?
Date オブジェクトは時刻を保持します。new Intl.DateTimeFormat(undefined, { timeZone: 'America/New_York' }) のようにタイムゾーンを指定すると、利用環境のIntlデータに基づいてDSTを反映します。
日本が DST を採用していないのはなぜ?
日本では過去に夏時間が実施された時期がありますが、現在は採用していません。廃止理由を単一の要因に断定するには、信頼できる歴史資料の確認が必要です。
出典・参考資料
- ECMAScript Internationalization API: DateTimeFormat
- NSW Government: Daylight saving
- European Commission: Summertime
本文は上記資料を参考にした解説です。仕様やサービスの運用は変更されることがあるため、実際の利用時は公式資料も確認してください。