開発 · 2分で読めます ·

Unix タイムスタンプは秒?ミリ秒?

毎週どこかで本番に出てしまう「13 桁」のバグと、2 つの単位を見分けるとてもシンプルなルール。

JavaScript はミリ秒、多くのバックエンドは秒で時刻を扱います。取り違えると、日付は 1970 年 1 月か、数万年先の未来に飛んでしまいます。

桁数を数える

現在のタイムスタンプは秒なら 10 桁です(1790000000 は 2026 年 9 月 21 日)。同じ瞬間はミリ秒で 13 桁、マイクロ秒で 16 桁、ナノ秒で 19 桁になります。

見分けるルール

絶対値が 10¹² より大きければミリ秒、そうでなければ秒とみなします。2001 年 9 月以降のミリ秒のタイムスタンプと、33658 年より前の秒のタイムスタンプなら、このルールで判別できます。

const ms = Math.abs(n) > 1e12 ? n : n * 1000;

単位は明示的に選ぶ

4Dev のタイムスタンプ変換ツールは推測しません。"Unix Timestamp" は秒、"Unix Timestamp (ms)" はミリ秒を意味し、マイクロ秒やナノ秒の形式も並んでいます。ISO 8601、RFC 2822、SQL DATETIME、Excel のシリアル日付を含め、全部で 33 の形式に対応しています。

タイムスタンプ変換ツールを開く