Unixタイムスタンプと日時を相互変換
Unixタイムスタンプと人間が読める日時形式を相互変換する無料ツールです。サーバーログの解析、APIレスポンスの日時確認、データベースのタイムスタンプ検証など、開発者がタイムスタンプを扱う場面で即座に変換できます。
Unixタイムスタンプは、1970年1月1日00:00:00 UTC(Unixエポック)からの経過秒数で日時を表現する形式です。タイムゾーンに依存しないため、国際的なシステム間での日時データのやり取りに広く使われています。10桁(秒)と13桁(ミリ秒)の両方に対応しています。
変換結果にはUTCとJST(UTC+9)の両方を表示します。日本のサービス開発で使いやすいよう、JSTでの表示を標準で提供しています。
Unixタイムスタンプ(Unix時間、エポック秒、POSIX時間とも呼ばれます)とは、1970年1月1日0時0分0秒(UTC)を起点とし、そこからの経過秒数で時刻を表す方式です。この起点をUnixエポックと呼びます。年・月・日・時・分・秒に分けて表現する通常の日時とは異なり、たった一つの整数で時刻を表せるのが特徴です。タイムゾーンや表記の違いに左右されないため、サーバーログ、APIのレスポンス、データベースの保存値、ファイルの更新日時など、コンピュータが時刻を扱うあらゆる場面で標準的に使われています。
Unixタイムスタンプには大きく分けて2つの単位があります。1つは秒単位で、現在(2020年代)の値はおよそ10桁の整数になります。もう1つはミリ秒単位で、秒の値を1000倍した約13桁の整数です。JavaScriptのDate.now()やJavaのSystem.currentTimeMillis()はミリ秒を返す一方、PHPのtime()やデータベースの多くは秒を返します。扱う際はどちらの単位かを必ず確認する必要があります。本ツールでは、入力された値が13桁相当(おおよそ1兆を超える値)の場合は自動的にミリ秒とみなし、秒に換算してから日時に変換します。
以下はUTC基準で正確に算出した変換例です。JSTはUTCに9時間(UTC+9)を加えた値です。秒の値を1000倍するとミリ秒になります。
| Unixタイムスタンプ(秒) | 日時(UTC) | 日時(JST/UTC+9) | 桁数 |
|---|---|---|---|
| 0 | 1970-01-01 00:00:00 | 1970-01-01 09:00:00 | 1桁 |
| 1000000000 | 2001-09-09 01:46:40 | 2001-09-09 10:46:40 | 10桁 |
| 1500000000 | 2017-07-14 02:40:00 | 2017-07-14 11:40:00 | 10桁 |
| 1600000000 | 2020-09-13 12:26:40 | 2020-09-13 21:26:40 | 10桁 |
| 1700000000 | 2023-11-14 22:13:20 | 2023-11-15 07:13:20 | 10桁 |
| 1735689600 | 2025-01-01 00:00:00 | 2025-01-01 09:00:00 | 10桁 |
| 2147483647 | 2038-01-19 03:14:07 | 2038-01-19 12:14:07 | 10桁 |
秒とミリ秒の見分け方は桁数を数えるのが簡単です。現在のおおよその基準として、10桁(例: 1700000000)なら秒単位、13桁(例: 1700000000000)ならミリ秒単位です。13桁の値はそのままnew Date(ts)に渡せますが、秒単位の10桁の値は1000倍してミリ秒に変換してから渡す必要があります。誤って単位を取り違えると、時刻が約1000倍ずれて遠い未来や過去になってしまうため注意してください。