tomai
ログイン

Unix タイムスタンプ: 日付を壊す4つの罠

Unix タイムスタンプは 1970-01-01 UTC からの秒数にすぎません。単純 — なのにタイムスタンプは他のどの形式よりも多くの日付バグを生みます。4 つの罠が大半を説明します。

1. 秒 vs ミリ秒

JavaScript の Date.now() はミリ秒。古典的な Unix 時間や多くのバックエンドログは秒です。10 桁なら秒、13 桁ならミリ秒。混ぜると 2026 年は西暦 53,000 年 — または 1970 年の日付になります。

2. UTC vs ローカル

タイムスタンプ自体にタイムゾーンはありません — どこでも同じ瞬間です。バグは、サーバーのタイムゾーンで変換したり、2026-09-01 08:00 のような文字列をどのゾーンか告げずにパースしたりするときに生まれます。

3. サマータイムの跳躍

サマータイムのあるゾーンは年 2 回 1 時間動きます。夏と冬のローカル 09:00 として保存された会議は、別々の UTC の瞬間です。UTC で保存し表示時に変換すれば、この種のバグは一掃できます。

4. ロケール依存のパース

03/04/2026 は国によって 3 月 4 日だったり 4 月 3 日だったりします。テキストから日付をパースするには明示的な書式が必須 — 推測は禁物です。

実用規則: UTC で保存、表示時だけ変換、書式は必ず明示。タイムスタンプや日付文字列を調べるには タイムスタンプ変換世界時計の並べ替え — どちらもブラウザ内で動きます。