コンテンツへスキップ

Unix タイムスタンプ変換

Unix エポック秒を人が読める日時に、またはローカルの日時をエポック秒に変換します。Unix タイムスタンプ(1970-01-01 UTC からの秒数)または日時文字列を入力すると、ブラウザのローカル時刻を基準に対応する値を出力します。

ブラウザ内でローカルに実行
Unix タイムスタンプ変換ツール
現在の Unix タイムスタンプ
ブラウザのローカル時刻

タイムスタンプ → 日時

Unix タイムスタンプ
ブラウザのローカル時刻

日時 → タイムスタンプ

ブラウザのローカル時刻
Unix タイムスタンプ

Unix タイムスタンプ変換リファレンス

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 タイムゾーンを適用するのが基本です。

環境別の Unix タイムスタンプ例
実行環境現在のタイムスタンプタイムスタンプを UTC の日時に変換
JavaScriptMath.floor(Date.now() / 1000)new Date(timestamp * 1000).toISOString()
Pythonint(time.time())datetime.fromtimestamp(timestamp, timezone.utc)
PHPtime()(new DateTimeImmutable("@$timestamp"))->setTimezone(new DateTimeZone("UTC"))
JavaInstant.now().getEpochSecond()Instant.ofEpochSecond(timestamp)
Gotime.Now().Unix()time.Unix(timestamp, 0).UTC()
RubyTime.now.to_iTime.at(timestamp).utc
PostgreSQLSELECT EXTRACT(EPOCH FROM NOW())::bigint;SELECT TO_TIMESTAMP(timestamp) AT TIME ZONE 'UTC';
MySQLSELECT UNIX_TIMESTAMP();SELECT FROM_UNIXTIME(timestamp);

Unix タイムスタンプを変換する方法

このページは Unix エポックからの経過秒数をブラウザーのタイムゾーンの日時に変換し、ローカルの日時を逆にタイムスタンプへ戻します。ライブ時計で現在値が確認でき、停止して値を固定できます。

変換はすべてブラウザーが申告するタイムゾーンで行われるため、UTC ではなく手元の時計と一致します。計算はページ内で完結し、入力がサーバーへ送られることはありません。

  1. ライブ時計で現在のタイムスタンプを読み、残したい値なら「停止」で固定します。
  2. 「Unix タイムスタンプ」欄に値を貼り付け、「日時に変換」を押すとローカルの日時が表示されます。
  3. ローカルの日時を YYYY-MM-DD HH:mm:ss 形式で入力し、「タイムスタンプに変換」を押すと秒が得られます。
  4. 「更新」で時計を再開し、必要な値をクエリ・ログ・スクリプトへコピーします。
  5. 13 桁の値はミリ秒であることが多いため、変換前に 1000 で割ってください。

Unix 時間のしくみ

エポックの実際の動き

Unix 時間は 1970-01-01T00:00:00 UTC からの経過秒数を数え、うるう秒は数えません。そのためカレンダー構造ではなく単純な整数です。常に UTC で定義されるので、同じ値を 2 つのタイムゾーンで表示すると時計は違っても指す瞬間は同じになります。

うるう秒を含めないため、物理的な秒数の厳密な計測ではありませんが、OS・データベース・言語が標準の交換形式として使えるだけの一貫性があります。epoch time や POSIX time と呼ばれるのはこのためです。

秒・ミリ秒・マイクロ秒

基本は秒で、2001 年から 2286 年までは 10 桁です。JavaScript と Java はミリ秒(13 桁)を使い、マイクロ秒やナノ秒(16 桁・19 桁)で保存するシステムもあります。年 50000 のように見える値は、ほぼ常にミリ秒を秒として読んだ結果です。

API へタイムスタンプを送るときは単位をドキュメントで確認し、クライアントがミリ秒・サーバーが秒で保存する典型的な食い違いに注意してください。症状は数十年先の日付として現れ、このページで変換すればすぐ分かります。

タイムゾーン・夏時間・2038 年問題

タイムスタンプにタイムゾーンはありませんが、日時にはあります。ローカル時刻で真夜中を書く 2 台のサーバーは別々の値を残すため、保存は瞬間のまま、表示のときだけ変換するのが原則です。夏時間の切り替えは逆変換をあいまいにします。存在しない時刻はここでは拒否し、2 回現れる時刻は最初のオフセットで解決します。

Unix 時間を符号付き 32 ビット整数で保存するシステムは、カウンターが 2,147,483,647 を超える 2038 年 1 月にオーバーフローします。64 ビット環境は影響を受けませんが、組み込み機器や 32 ビット項目を持つ古い形式は確認が必要です。

Unix 時間に関する質問

変換した時刻が数時間ずれるのはなぜですか?

変換はブラウザーのローカルタイムゾーンを使い、サーバーやログ、データベースは通常 UTC で記録しています。どちらも同じ瞬間を指しており、違うのはオフセットだけです。時計ではなくタイムスタンプ同士を比べると確認できます。

タイムスタンプが 13 桁になるのはなぜですか?

ミリ秒で表されているためです。JavaScript と Java は標準でこの単位を使います。このページは秒を想定しているので、変換前に 1000 で割ってください。割らずに変換すると遠い未来の年として表示されます。

現在のタイムスタンプをコードで得るには?

JavaScript なら Math.floor(Date.now() / 1000)、PHP なら time()、Python なら int(time.time())、SQL なら各エンジンの関数(MySQL の UNIX_TIMESTAMP()、SQLite/PostgreSQL の strftime('%s','now'))を使います。

2038 年問題とは何ですか?

Unix 時間を符号付き 32 ビット整数で保存するシステムが、カウンター 2,147,483,647 を超える 2038-01-19 03:14:08 UTC にオーバーフローする問題です。64 ビット環境は影響を受けませんが、組み込み機器や 32 ビット前提の形式は影響を受けます。

Unix 時間はうるう秒を数えますか?

数えません。1 日を 86,400 秒として扱い、UTC に時折挿入されるうるう秒を無視します。物理的な秒数の厳密な計測ではありませんが、システム間の標準的な交換形式として使われています。

ISO 8601 の日時はいつ使うべきですか?

値が人間に読まれる場合や、オフセットを一緒に運ぶ必要がある場合です。たとえば JSON やログでは 2023-11-15T06:13:20+08:00 ならタイムゾーンの解釈に迷いません。計算・比較・保存にはタイムスタンプのほうが単純です。

最近使ったツール: