Unixタイムスタンプ変換
Unixタイムスタンプ(エポック)を、ローカル時刻・UTC・ISO 8601 の読みやすい日付に変換したり、任意の日付をタイムスタンプに戻したりできます。秒・ミリ秒のどちらにも対応しています。
—
ミリ秒: —
ISO 8601: —
エポック値を貼り付けてください。タイムスタンプがミリ秒の場合はトグルを切り替えます。
日付と時刻を選択すると、そのUnixタイムスタンプが得られます。
Unixタイムスタンプ変換 の使い方
- 1
タイムスタンプを入力する
「タイムスタンプから日付へ」の入力欄にUnixタイムスタンプを入力するか貼り付け、値に合わせて「秒 / ミリ秒」トグルを切り替えます。
- 2
日付を読み取る
その時刻をローカルのタイムゾーン、UTC、ISO 8601 形式の文字列、そして「3時間前」のような相対時間で確認できます。
- 3
日付を逆変換する
「日付からタイムスタンプへ」のピッカーで任意の日付と時刻を選ぶと、秒とミリ秒のエポック値が得られます。
- 4
結果をコピーする
任意の値のコピーをクリックするとクリップボードに保存され、コードやデータベースクエリ、APIリクエストにそのまま貼り付けられます。
開発者のための Unix 時間の解説
Unix タイムスタンプとは何か
Unix タイムスタンプは、ある時点を表すひとつの数値です。Unix エポック、すなわち 1970年1月1日の UTC 午前0時からの経過秒数を数えたものです。たとえばタイムスタンプ 1700000000 は、2023年11月14日 22:13:20 UTC に対応します。ひとつの数値が、日付と時刻のすべてを曖昧さなく捉えます。
上に向かって数えていくだけの整数なので、Unix 時間は保存・並べ替え・比較が容易です。あるタイムスタンプから別のタイムスタンプを引けば、2つの出来事の間の正確な秒数が得られます。この単純さこそ、ファイルの更新時刻から認証トークンまで、コンピューティングの非常に多くを支えている理由です。
なぜ 1970年なのか
1970年というエポックは、ちょうどその頃ベル研究所で開発が進められていた Unix オペレーティングシステムに由来する、歴史的な産物です。エンジニアたちはシステムクロックのための固定された基準点を必要としていて、自分たちが取り組んでいた年代の始まりは、きりがよく便利な選択でした。それが定着し、何十年も経った今も、ほぼすべてのプラットフォームで標準であり続けています。
1970年に数学的に特別なところは何もなく、単に共有されたゼロ点にすぎません。重要なのは、誰もがそれに合意していることです。その共通の基準があるからこそ、あるマシンで生成されたタイムスタンプを、ベンダーや言語、場所に関係なく、他のどのマシンでも正しく理解できるのです。
秒とミリ秒
伝統的な Unix 時間は秒単位で計測されますが、現代の多くの環境では、より細かい分解能のためにミリ秒を使います。たとえば JavaScript の Date.now はミリ秒を返します。実用的な見分け方は桁数です。現在のタイムスタンプは秒単位なら10桁ですが、同じ時点をミリ秒単位で表すと13桁で、およそ1,000倍大きくなります。
この2つの単位を取り違えるのは、よくあるバグです。秒を期待する関数にミリ秒の値を渡すと、日付は何万年も未来になってしまい、その逆をすると 1970年あたりに戻ってしまいます。変換後の日付がばかげて見えるときは、まず単位を確認してください。このツールの「秒」と「ミリ秒」のトグルは、まさにその混乱をワンクリックで解消するために存在します。
UTC とローカル時刻
Unix タイムスタンプ自体は、タイムゾーンを持ちません。地球上のどこでも同じ瞬間を指し示し、その数値は東京にいてもニューヨークにいても同一です。タイムゾーンが関わってくるのは、その瞬間を人が読める日付に変換するときだけであり、だからこそ同じタイムスタンプが、場所によって異なる時計の時刻として表示されるのです。
このコンバーターは両方の形式を表示します。お使いのデバイスのタイムゾーンで整形したローカル時刻と、普遍的な基準である UTC です。タイムスタンプを UTC で保存・送信し、表示のときだけローカル時刻に変換するのが標準的なやり方で、特に夏時間(サマータイム)の切り替えのあたりで起きがちな、数時間ずれるたぐいのバグをまるごと避けられます。
2038年問題
古いシステムの多くは、Unix 時間を符号付き32ビット整数で保存しますが、これが保持できる最大値は 2,147,483,647 です。その上限に達するのが、2038年1月19日 03:14:07 UTC です。その1秒後にカウンターはオーバーフローし、大きな負の数へと巻き戻り、そうしたシステムはそれを 1901年に遡った日付として解釈してしまいます。
これは2000年問題が現代に響いたもので、組み込み機器やレガシーなデータベース、いまだ32ビット時間を使っているあらゆるコードを脅かします。解決策は、時間をより幅広い64ビット整数で保存することで、これによって限界が数千億年も先へと押しやられます。このツール自体は、32ビット時間ではなく JavaScript 組み込みの日付処理を使ってブラウザ内で動作するので、2038年をはるかに超える日付も問題なく変換します。
両方向への変換
タイムスタンプから日付へ進むとは、その数値をエポックからの秒数として扱い、それを足し上げることを意味します。その逆、すなわち日付からタイムスタンプへ変換することは、エポックからその時点までに何秒あるかを計算します。このコンバーターは両方を行います。エポック値を貼り付けてその日付を読み取ることも、ピッカーで日付を選んでそのタイムスタンプを得ることもできます。
「3時間前」のような相対時間の表示は、現在の時点からタイムスタンプを引き、その差を平易な言葉で言い表すことで導かれます。ひと目で値の妥当性を確認するのに便利で、たとえば2年後の未来から来たと主張するログのエントリは、明らかに怪しいとわかります。
Unix 時間に出会う場面
Unix タイムスタンプは、ソフトウェアのいたるところにあります。サーバーのログは、出来事を正確に順序づけられるよう、各行にタイムスタンプを刻みます。REST API は、言語に依存せずコンパクトであるため、created_at や expires_at のようなフィールドでそれらを返します。データベースは並べ替えや時間範囲のクエリにそれらを使い、JWT は有効期限を Unix タイムスタンプとしてエンコードします。
開発者やアナリストにとって、こうした値を素早く読み取ることは、日々の必要事です。API のレスポンスをデバッグしたり、ログファイルを拾い読みしたり、トークンがいつ失効するかを確認したりするとき、生の数値をコンバーターに放り込めば、不透明な整数が、ローカル時刻と UTC の両方で、秒またはミリ秒で、筋道立てて考えられる日付へと変わります。
よくある質問
Unixタイムスタンプとは何ですか?
自分のタイムスタンプは秒単位ですか、ミリ秒単位ですか?
このコンバーターはどのタイムゾーンを使いますか?
2038年問題とは何ですか?
入力したデータはサーバーに送信されますか?
関連ツール
こちらの便利なツールもどうぞ