時間と日付
Unixタイムスタンプ変換ツール
Unix タイムスタンプを読みやすい UTC とローカルの日時に変換するか、日時をエポックタイムスタンプへ戻します。
Unix タイムスタンプは1970年1月1日 UTC からの丸の秒数を数えます。値が13桁ならミリ秒なので、まず1000で割ってください。
Unix 時間が日付に変換される仕組み
Unix タイムスタンプは、1970年1月1日 00:00:00 UTC(エポックと呼ばれる)から経過した秒数です。日付に変換するには、計算ツールが86,400(1日の秒数)で割って日を求め、余りを使って時・分・秒を、すべて UTC で求めます。たとえば1,700,000,000秒は2023年11月14日 22:13:20 UTC です。逆方向では、入力した日時までエポックからの丸の秒数を数えます。うるう秒は無視され、これはほぼすべての OS とデータベースが値を保存する方法に一致します。
結果は UTC と、ブラウザのローカル時刻で表示されます。グリニッジから大きく進んだり遅れたりしていると、別の暦日になることもあります。ISO 8601 の行(たとえば 2023-11-14T22:13:20Z)はあいまいさのない書き言葉の形で、末尾の Z は Zulu、つまり UTC を意味します。
| タイムスタンプ(秒) | UTC の日時 | 備考 |
|---|---|---|
| 0 | 1970-01-01 00:00:00 | エポック |
| 1000000000 | 2001-09-09 01:46:40 | 10億秒 |
| 1700000000 | 2023-11-14 22:13:20 | 例の値 |
| 2147483647 | 2038-01-19 03:14:07 | 32ビット符号付きの上限 |
秒、ミリ秒、そして2038年問題
最も多い誤りは秒とミリ秒の取り違えです。ほとんどのバックエンドは秒を保存しますが、JavaScript の Date.now() や多くのログはミリ秒を使い、これは1,000倍大きく、現在前後の日付では10桁ではなく13桁です。変換した日付が遠い未来に来るなら、おそらくミリ秒の値を秒のフィールドに貼り付けています。符号付き32ビット整数でタイムスタンプを保存するシステムは、2038年1月19日 03:14:07 UTC(表に示した点)で容量が尽きます。これが2038年問題で、現代のシステムは64ビット整数を使って回避し、上限をおよそ2920億年先まで押しやります。
よくある質問
Unix タイムスタンプは秒ですかミリ秒ですか?
慣例では1970年からの丸の秒です。ミリ秒は JavaScript や一部の API が使い1,000倍大きいので、現在の値は10桁ではなく13桁です。1,000で割ると秒になります。
Unix タイムスタンプはどのタイムゾーンを使いますか?
それ自体は使いません。UTC での1つの瞬間を印します。同じタイムスタンプが世界中で異なる時計の時刻として表示されるので、このツールは UTC とローカル時刻の両方を表示します。
2038年問題とは何ですか?
符号付き32ビット整数で保存されたタイムスタンプは2,147,483,647秒、つまり2038年1月19日であふれます。その後は負の数に巻き戻ります。64ビット整数なら実用上の上限がなくなります。