レッスン 2

秒とミリ秒

10 桁 vs 13 桁の値と 1000 倍オフバグの避け方。

Unix 時間は秒で定義されますが、多くのランタイムはより細かい精度のためミリ秒を公開します。2 つを混在させるのが最も一般的なタイムスタンプバグの 1 つです。

桁数ヒューリスティック

10 進表記のおおよそのルール:

桁数通常の意味
101700000000
13ミリ秒1700000000000

他の長さは文脈が必要 — 常に API ドキュメントで確認。

両方が存在する理由

  • — コンパクト、多くのログと JWT 有効期限に十分; Python の time.time()、多くの C API、Linux date +%s
  • ミリ秒 — JavaScript Date.now()、Java System.currentTimeMillis()、サブ秒順序の一部 JSON API

変換は 1000 倍または除算 — 方向を間違えると日付が 1970 年や遥か未来に飛びます。

小数秒

一部システムは浮動小数点秒1700000000.123)を返します。これは依然「秒 + 小数」であり、ミリ秒ではありません。整数ミリ秒フィールドとしてパースすると精度を失うか検証失敗します。

防御的習慣

  1. 先に API スキーマまたはサンプル payload を読む
  2. 日付が約 1000 倍おかしければ、単位を頭の中で入れ替える
  3. 内部は 1 つの規約(アプリコードでは often ms または µs)で保存し、境界で変換
  4. DB では可能なら裸整数より TIMESTAMPTZ 型を優先

要点

秒とミリ秒は同じタイムラインを異なるスケールで名付ける。 変換や比較の前にソースがどのスケールか知ってください。

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

関連ツールを開く

コース概要へ戻る