Unixタイムスタンプ変換

秒・ミリ秒のUnixタイムスタンプを日付に変換し、日付からUnix時間への逆変換もできます。UTCとローカル時刻を並べて確認できます。

Unixタイムスタンプとは

Unixタイムスタンプとは、1970年1月1日00:00:00(UTC)から経過した秒数のことです。この起点は「Unixエポック」と呼ばれます。数値にタイムゾーンは含まれず、同じ瞬間であれば世界中どこでも同じ値になります。そのため、ログ、データベース、APIで重宝されます。保存するのは1つの数値だけで、現地時刻での表示は読む側に任せられるからです。たとえばタイムスタンプ 1704067200 は、2024年1月1日が始まるUTCの午前0時を表します。

秒か、ミリ秒か

現在の日付を表すタイムスタンプは、秒単位なら10桁、ミリ秒単位なら13桁です。JavaScriptの Date.now() やJavaの System.currentTimeMillis() はミリ秒を返します。PHPの time()、date +%s コマンド、多くのデータベースは秒を使います。この2つの取り違えは、タイムスタンプで最もよくある不具合です。ミリ秒の値を秒として読むと数万年先の未来になり、秒の値をミリ秒として読むと1970年1月になります。そのためこのツールは、桁数から単位を推測せず、利用者に選んでもらう方式にしています。

うるう秒、負の値、そして2038年

Unix時間は、どの1日もちょうど86,400秒として扱います。1972年から2016年までにUTCへ挿入された27回のうるう秒は数えません。つまりタイムスタンプは暦上のある瞬間を指す目印であり、経過した秒数の厳密な合計ではありません。1970年より前の瞬間は負の値になります。-86400 は1969年12月31日です。この値を符号付き32ビット整数で保存するシステムは、2038年1月19日03:14:07(UTC)に上限に達します。64ビットのシステムにこの制限はありません。何が影響を受けるのかは、2038年の境界で解説しています。

目印になるタイムスタンプ

タイムスタンプ(秒) 日時(UTC) 意味
0 1970-01-01 00:00:00 Unixエポック。ここから数え始める
1000000000 2001-09-09 01:46:40 10億秒。最初の10桁の値
1234567890 2009-02-13 23:31:30 1から9、そして0が順に並ぶ値。当時プログラマーたちが祝った
2000000000 2033-05-18 03:33:20 20億秒
2147483647 2038-01-19 03:14:07 符号付き32ビット整数で表せる最大値

現在のタイムスタンプ(秒)を取得する

JavaScript Math.floor(Date.now() / 1000)
Python int(time.time())
PHP time()
Bash date +%s
PostgreSQL SELECT EXTRACT(EPOCH FROM now())::bigint
MySQL SELECT UNIX_TIMESTAMP()

よくある質問

UnixタイムスタンプはUTCですか?

UTCで定義された瞬間から数えた値で、数値そのものにタイムゾーンはありません。読むときに、表示用のタイムゾーンを選びます。このツールは結果をUTCと端末の現地時刻の両方で並べて表示するので、一度に確認できます。

変換結果が1970年になるのはなぜ?

秒単位の値をミリ秒として読んでいるか、本来の時刻が入るべきところが0や空になっているかのどちらかです。単位を秒に切り替えて、もう一度変換してください。はるか未来の日付になる場合は、逆の取り違えが起きています。

結果の末尾にあるZは何を意味しますか?

結果はISO 8601形式で表示されます。たとえば 2024-01-01T00:00:00.000Z です。Tは日付と時刻の区切り、Zは時刻がUTCであることを示します。この目印が大切な理由は、日付は瞬間ではないで解説しています。

変換できる日付の範囲は?

エポックの前後それぞれ1億日までのタイムスタンプを変換できます。これはJavaScriptの日付の上限です。日付からタイムスタンプに変換する場合、日付欄には0001年から9999年までを入力できます。

計算はブラウザー内で実行されます。アカウントは不要で、入力内容はサーバーに送信されません。 時計の仕組みと精度を見る。

関連記事

都市・ツールを検索

入力して検索 · Escで閉じる