00

Unixタイム変換

Unix timestampと日時を相互に変換します。秒とミリ秒、JSTとUTCを切り替えられます。

・

ボタンを押すと、ここに結果が出ます

timestamp から日時へ

自動判定では、10桁までを秒、それより長ければミリ秒として読みます。

日時から timestamp へ

入力した日時は「JST の壁時計」として解釈します。

使い方とメモ

  • 10桁は秒、13桁はミリ秒です。自動判定 のままで両方そのまま貼れます。ログの値をコピペするときは切り替え不要です。
  • タイムゾーンを UTC にすると、日時入力もUTCの壁時計として解釈します。JSTは夏時間がないので、常に +09:00 固定で計算しています。
  • 現在時刻を入れる で「いま」を両方の欄に入れられます。動作確認の値を作るときに。
  • 変換はブラウザの中だけで動きます。
00

Unix タイムとは

Unix タイム(UNIX 時間、エポック秒)は、1970年1月1日 0時0分0秒(UTC)からの経過秒数です。たとえば 1791158400 は 2026年10月5日 0時0分(UTC)、日本時間では同じ日の 9時0分を表します。

ただの数字なので、タイムゾーンを持ちません。同じ値は世界中どこで見ても同じ瞬間を指します。「日本時間の Unix タイム」というものはなく、ずれが出るのは人が読める日時に直すときだけです。データベースやログに時刻を残すのに使われるのは、この扱いやすさのためです。

なお、Unix タイムはうるう秒を数えません。1日はいつも 86,400 秒として計算します。

秒とミリ秒を見分ける

同じ「Unix タイム」でも、言語や環境によって単位が違います。いまの時刻なら、桁数で見分けられます。

桁数単位主な出どころ
10桁秒PHP の time()、MySQL の UNIX_TIMESTAMP()、Go の Unix()
13桁ミリ秒JavaScript の Date.now()、Java の currentTimeMillis()
10桁+小数秒Python の time.time()

単位を取り違えると、日時が大きく狂います。秒の値をミリ秒として読むと 1970年1月の日付に、ミリ秒の値を秒として読むと数万年先の日付になります。変換結果が 1970年や遠い未来になったら、まず単位を疑ってください。このツールは「自動判定」で、桁数から秒かミリ秒かを判断します。

秒が 10 桁なのは 2001年9月9日(1000000000)から 2286年11月20日までです。当面は「10桁なら秒、13桁ならミリ秒」で困ることはありません。

2038年問題

Unix タイムを符号付き 32 ビット整数で持つと、表せる最大値は 2147483647、日時にすると 2038年1月19日 3時14分7秒(UTC)です。その1秒後には値があふれて負の数になり、1901年12月13日に戻ってしまいます。これが 2038年問題です。

いまの多くの環境は 64 ビットで時刻を扱うので、この上限には当たりません。気をつけたいのは、型の範囲が 2038年までに決まっている場所です。たとえば MySQL の TIMESTAMP 型は 2038年1月19日 3時14分7秒(UTC)までしか入りません。有効期限や長期の予定のように遠い未来の日付を入れる列は、DATETIME 型(9999年まで)にしておくと安全です。

負の値は 1970年より前

Unix タイムは負の数にもなり、1970年より前の日時を表します。-86400 は 1969年12月31日 0時0分(UTC)です。生年月日のような古い日付を Unix タイムで持つときは、負の値を受け付けない仕組み(符号なしの型や、0 未満を弾く入力チェック)がないか確かめておいてください。