KDOC 553: Dateはわずかな違いでタイムゾーンが変わる

この文書のステータス

  • 作成
    • 2026-03-15 貴島
  • レビュー
    • 2026-04-19 貴島

概要

JavaScriptで、 Date オブジェクトのタイムゾーンがコンストラクタの日時フォーマットによって変わるのにハマった。有名な落とし穴のようである。

// どちらもタイムゾーンオフセットがない。日時の有無の違い
console.log(new Date('2026-06-01')) // UTC -> UTC
console.log(new Date('2026-06-01T00:00:00')) // local timezone(Asia/Tokyo) -> UTC
2026-06-01T00:00:00.000Z
2026-05-31T15:00:00.000Z
undefined

仕様を見る。

タイムゾーンオフセットがない場合、日付のみの形式は UTC 時刻として解釈され、日時形式はローカル時刻として解釈されます。 Date - JavaScript | MDN

関連

  • 類推: Dateオブジェクトまわりで、同じようなわかりにくい仕様はあるだろうか