レッスン 3

UTC、ローカル時刻、タイムゾーン

壁時計 vs instant、IANA ゾーン、夏時間のずれ。

Unix タイムスタンプは** instant** — グローバルタイムライン上の 1 点 — を識別します。UTCローカル時刻は、人間向けにその instant をラベル付けする別の方法です。

UTC

協定世界時(UTC) は季節オフセットのない参照時間尺度です。ログが「すべて UTC」と言うとき、地域を跨ぐ比較にローカルルールの推測は不要です。

Z で終わる ISO 文字列は「Zulu」= UTC、例 2024-01-15T08:30:00Z

ローカル壁時計

ノート PC の時計はローカル壁時計 — タイムゾーン内の市民時間、夏時間調整込み — を示します。同じタイムスタンプを見ても開発者 2 人は異なる時刻表記を書くことがあります。

  • Europe/Berlin2024-07-01 09:00
  • Asia/Shanghai2024-07-01 15:00

どちらも同じ instantを表せます。

IANA タイムゾーン名

システムは America/New_YorkAsia/Tokyo(IANA Time Zone Database)のような名前を使います。これらは歴史的オフセット変更をエンコード — 将来イベントを DST 境界を跨いでスケジュールするときは固定「UTC+8」ラベルより優先。

オフセットだけはタイムゾーンではない。 ある日の UTC+8 だけでは国ごと DST ルールが異なるとき何が起きるか分かりません。

保存 vs 表示

バックエンドのベストプラクティス:

  • UTC instant(タイムスタンプまたは TIMESTAMPTZ)を保存
  • UI またはユーザー別レポートでのみローカルタイムゾーンに変換

要点

タイムスタンプはいつを保存; タイムゾーンは時計の読み方を決める。どの層を見ているか常に把握してください。

実践したいときは関連する DevCove ツールを使えます。任意であり、このレッスンの必須部分ではありません。

関連ツールを開く

コース概要へ戻る