Unix タイムスタンプ変換
Unix タイムスタンプと人間可読な日時を相互変換。秒・ミリ秒、UTC・ローカルに対応。
上に入力すると結果が表示されます。
用途
Unix タイムスタンプは 1 つの整数で、1970-01-01 00:00:00 UTC からの秒数(またはミリ秒数)を表します。ログ、API レスポンス、JWT の iat/exp、DB の created_at、キャッシュヘッダなど至る所で使われます。曖昧さがなくタイムゾーン非依存ですが、人には読めないため、何かが 1735689600 で壊れたとき、それが今日の 14 時か早朝 4 時か、今年か昨年かを知る必要があります。本ツールは整数表現と可読表現を双方向に変換し、秒/ミリ秒の自動判定と相対時間の表示も行います。
使うべきタイミング
- ログや API レスポンスの
"timestamp": 1735689600をデコードしたいとき。 - JWT の発行日時や有効期限を確認したいとき(
iat/expはエポック秒)。 retry-afterヘッダ、スケジュールジョブ、キャッシュ TTL のために未来のタイムスタンプを計算したいとき。- DB に保存された値が秒なのかミリ秒なのかマイクロ秒なのかをサニティチェックしたいとき。
- 「今」を、いま使っているツールが要求する形式に変換したいとき。
秒・ミリ秒・マイクロ秒
- 秒 — Unix の本来の慣例。現在およそ 10 桁(例:
1735689600)。C、Linux、JWT、多くの API、整数カラムでよく使われます。 - ミリ秒 — JavaScript の
Date.now()、Java のSystem.currentTimeMillis()、Kafka、多くの JSON API。約 13 桁。 - マイクロ秒(16 桁)/ナノ秒(19 桁) — Python の
time.time_ns()、Go のtime.Now().UnixNano()、一部のメトリクス基盤。本ツールは自動処理しません。先に 1,000 や 1,000,000 で割ってから入力してください。
よくある注意点
- 2038 年問題。 32 ビット符号付きタイムスタンプは
2147483647= 2038 年 1 月 19 日 03:14:07 UTC でオーバーフローします。古い C コード、MySQL のTIMESTAMP型、組み込み機器は 1901 年に巻き戻ることがあります。現代のシステムは 64 ビットなので、約西暦 292,277,026,596 年まで問題ありません。 - Unix 時刻は閏秒を飛ばします。 Unix の 1 日は常に 86,400 秒ですが、UTC は 86,401 秒の日が稀にあります。これは設計上の選択(演算が単純になる)ですが、サブ秒精度の天文計算や GPS には Unix 時刻は使えません。
- 負のタイムスタンプ は有効で、1970 年以前を表します。一部ライブラリは拒否するため、依存する前に検証してください。
- 自動判定は完全ではありません。 10 桁の値は理論上は 1970 年のミリ秒タイムスタンプであり得ます(実用上は皆無)。単位が分かっているなら自動判定に頼らず明示してください。
- 常に UTC で保存しましょう。 タイムスタンプにタイムゾーンはありません。「ローカル時刻」は表示専用です。出力の "Local" 行はブラウザのタイムゾーンを使いますが、整数自体は常に UTC です。