Unix エポック秒を人が読める日時に、またはローカルの日時をエポック秒に変換します。Unix タイムスタンプ(1970-01-01 UTC からの秒数)または日時文字列を入力すると、ブラウザのローカル時刻を基準に対応する値を出力します。
ブラウザ内でローカルに実行A Unix timestamp counts elapsed seconds from 1970-01-01 00:00:00 UTC. This page interprets date and time input in the browser's local time zone.
タイムスタンプは UTC で保存し、ユーザーに表示するときだけ、夏時間規則を含む IANA タイムゾーンを適用するのが基本です。
| 実行環境 | 現在のタイムスタンプ | タイムスタンプを UTC の日時に変換 |
|---|---|---|
| JavaScript | Math.floor(Date.now() / 1000) | new Date(timestamp * 1000).toISOString() |
| Python | int(time.time()) | datetime.fromtimestamp(timestamp, timezone.utc) |
| PHP | time() | (new DateTimeImmutable("@$timestamp"))->setTimezone(new DateTimeZone("UTC")) |
| Java | Instant.now().getEpochSecond() | Instant.ofEpochSecond(timestamp) |
| Go | time.Now().Unix() | time.Unix(timestamp, 0).UTC() |
| Ruby | Time.now.to_i | Time.at(timestamp).utc |
| PostgreSQL | SELECT EXTRACT(EPOCH FROM NOW())::bigint; | SELECT TO_TIMESTAMP(timestamp) AT TIME ZONE 'UTC'; |
| MySQL | SELECT UNIX_TIMESTAMP(); | SELECT FROM_UNIXTIME(timestamp); |
このページは Unix エポックからの経過秒数をブラウザーのタイムゾーンの日時に変換し、ローカルの日時を逆にタイムスタンプへ戻します。ライブ時計で現在値が確認でき、停止して値を固定できます。
変換はすべてブラウザーが申告するタイムゾーンで行われるため、UTC ではなく手元の時計と一致します。計算はページ内で完結し、入力がサーバーへ送られることはありません。
Unix 時間は 1970-01-01T00:00:00 UTC からの経過秒数を数え、うるう秒は数えません。そのためカレンダー構造ではなく単純な整数です。常に UTC で定義されるので、同じ値を 2 つのタイムゾーンで表示すると時計は違っても指す瞬間は同じになります。
うるう秒を含めないため、物理的な秒数の厳密な計測ではありませんが、OS・データベース・言語が標準の交換形式として使えるだけの一貫性があります。epoch time や POSIX time と呼ばれるのはこのためです。
基本は秒で、2001 年から 2286 年までは 10 桁です。JavaScript と Java はミリ秒(13 桁)を使い、マイクロ秒やナノ秒(16 桁・19 桁)で保存するシステムもあります。年 50000 のように見える値は、ほぼ常にミリ秒を秒として読んだ結果です。
API へタイムスタンプを送るときは単位をドキュメントで確認し、クライアントがミリ秒・サーバーが秒で保存する典型的な食い違いに注意してください。症状は数十年先の日付として現れ、このページで変換すればすぐ分かります。
タイムスタンプにタイムゾーンはありませんが、日時にはあります。ローカル時刻で真夜中を書く 2 台のサーバーは別々の値を残すため、保存は瞬間のまま、表示のときだけ変換するのが原則です。夏時間の切り替えは逆変換をあいまいにします。存在しない時刻はここでは拒否し、2 回現れる時刻は最初のオフセットで解決します。
Unix 時間を符号付き 32 ビット整数で保存するシステムは、カウンターが 2,147,483,647 を超える 2038 年 1 月にオーバーフローします。64 ビット環境は影響を受けませんが、組み込み機器や 32 ビット項目を持つ古い形式は確認が必要です。
変換はブラウザーのローカルタイムゾーンを使い、サーバーやログ、データベースは通常 UTC で記録しています。どちらも同じ瞬間を指しており、違うのはオフセットだけです。時計ではなくタイムスタンプ同士を比べると確認できます。
ミリ秒で表されているためです。JavaScript と Java は標準でこの単位を使います。このページは秒を想定しているので、変換前に 1000 で割ってください。割らずに変換すると遠い未来の年として表示されます。
JavaScript なら Math.floor(Date.now() / 1000)、PHP なら time()、Python なら int(time.time())、SQL なら各エンジンの関数(MySQL の UNIX_TIMESTAMP()、SQLite/PostgreSQL の strftime('%s','now'))を使います。
Unix 時間を符号付き 32 ビット整数で保存するシステムが、カウンター 2,147,483,647 を超える 2038-01-19 03:14:08 UTC にオーバーフローする問題です。64 ビット環境は影響を受けませんが、組み込み機器や 32 ビット前提の形式は影響を受けます。
数えません。1 日を 86,400 秒として扱い、UTC に時折挿入されるうるう秒を無視します。物理的な秒数の厳密な計測ではありませんが、システム間の標準的な交換形式として使われています。
値が人間に読まれる場合や、オフセットを一緒に運ぶ必要がある場合です。たとえば JSON やログでは 2023-11-15T06:13:20+08:00 ならタイムゾーンの解釈に迷いません。計算・比較・保存にはタイムスタンプのほうが単純です。