支柱ガイド
タイムスタンプとタイムゾーンのガイド
タイムスタンプ変換、タイムゾーン比較、スケジュールやレポートを壊す数時間単位のズレを避けるための実用リファレンスです。
多くの時間バグは計算ミスではなく、暗黙の前提から生まれます。バックエンドは UTC で保存しているのにフロントエンドはローカル時刻で表示する、レポートがタイムゾーンなしの日付だけを載せる、秒単位のタイムスタンプをミリ秒と誤解する、といったケースです。そうなると症状はランダムに見えますが、根本原因は一貫しています。
最初に確認すること: 元のタイムゾーンはどこか
いきなり数値を変換しないでください。まず元のタイムゾーン、表示するタイムゾーン、その間の形式境界を明示します。このどれか 1 つでも暗黙のままだと、変換はすでに危険です。信頼できるワークフローでは、リリースノート、cron ジョブ、会議予定を生成する前に、この 3 点を記録します。
チームの調査時間を奪うミス
最も大きいのは秒とミリ秒の混同です。次に、ローカルの壁時計時刻を UTC であるかのようにシリアライズすること。3 つ目は、どのタイムゾーンの値なのかを示さずに ISO 文字列を表示することです。テストデータが夏時間の境界や地域をまたぐ受け渡しを通らない場合、こうしたバグは単体テストをすり抜けます。
- ドキュメントと UI の人間が読む時刻には、必ず明示的なタイムゾーンを付けます。
- デバッグ時は、整形済み文字列の横に元の epoch 値も残します。
- スケジュール処理を出す前に、少なくとも 2 つの地域で 1 つの例を検証します。
実用的なブラウザ確認
まずタイムスタンプを UTC に変換し、次に目的のタイムゾーンへ変換し、最後に元の業務上の期待値と照合します。日付の加減算がある場合は、暗算の中でタイムゾーン変換と混ぜず、その手順を分けて実行してください。この分離だけで、当て推量より多くのミスを捕まえられます。
関連ガイド
ガイドとワークフロー
関連ツール
ツール一覧