CalcTune
📅
日時 · time

Unixタイムスタンプ変換ツール

Unixタイムスタンプと日付を瞬時に相互変換。ISO 8601、RFC 2822、相対時間など複数の出力形式に対応しています。

日付と時刻
3/20/2026, 10:53:41 AM
0 seconds ago
フォーマット
ISO 8601
2026-03-20T10:53:41.000Z
RFC 2822
Fri, 20 Mar 2026 10:53:41 GMT
日付
3/20/2026
時刻
10:53:41 AM
結果をシェア
現在のタイムスタンプ
1774004021

Unixタイムスタンプの完全ガイド:仕組みと活用法

Unixタイムスタンプ(エポック時間、POSIX時間とも呼ばれる)は、コンピュータの世界における時刻管理の根幹を成す概念です。1970年1月1日 午前0時(UTC)—「Unixエポック」と呼ばれるこの瞬間—からの経過秒数で時刻を表現する、シンプルかつ普遍的な仕組みです。このシンプルなシステムは、世界中のソフトウェアシステム、データベース、APIにおける時刻管理の基盤として広く採用されています。

Unixタイムスタンプの最大の魅力は、そのシンプルさにあります。タイムゾーン、サマータイム、うるう年、月ごとの日数の違いなど、複雑な要素を気にすることなく、すべての時刻を1つの整数で表現できるのです。タイムスタンプ「0」はエポックそのものを、「1609459200」は2021年1月1日 午前0時(UTC)を表します。保存や比較、計算が容易で、2つの時刻の差を求めるには単純な引き算をするだけです。

Unixタイムスタンプの仕組み

Unixタイムスタンプの本質は、秒数のカウントです。「1672531200」というタイムスタンプは、Unixエポックからちょうど1,672,531,200秒が経過したことを意味します。これを人間が読める日付に変換するには、1970年1月1日 00:00:00 UTCを起点にその秒数を加算します。逆に日付をタイムスタンプに変換する場合は、その日時とエポックの差を秒単位で計算します。

ほとんどのプログラミング言語やシステムには、Unixタイムスタンプを扱うための組み込み関数が用意されています。JavaScriptのDate.now()はミリ秒単位のタイムスタンプを返し(1000で割るとUnix秒になります)、Pythonのtime.time()は秒単位で直接返します。SQLデータベースにはUNIX_TIMESTAMP()やEXTRACT(EPOCH FROM timestamp)といった関数があります。これらの関数が、複雑なカレンダー計算をすべて処理してくれます。

タイムゾーンとUTC

Unixタイムスタンプの重要な特徴は、常にUTC(協定世界時)を基準としており、ローカル時間ではないという点です。タイムスタンプ「1672531200」は、世界のどこにいても同じ絶対的な瞬間を表します。ただし、タイムスタンプを人間が読める日付に変換する際は、通常ユーザーのローカルタイムゾーンで表示します。日本の場合はJST(日本標準時、UTC+9)で表示されることが一般的です。

保存時は常にUTC、表示時はローカル時間という分離は、Unixタイムスタンプの大きな利点の一つです。タイムスタンプとともにタイムゾーン情報を保存する必要がなく、タイムスタンプ自体がタイムゾーンに依存しません。タイムゾーンが重要になるのは、人間が読める形式との変換時だけです。これにより、イベントの記録、タスクのスケジューリング、分散システムの同期に最適なフォーマットとなっています。

2038年問題

従来のUnixタイムスタンプは32ビットの符号付き整数として保存されており、-2,147,483,648から2,147,483,647までの値を表現できます。これは1901年12月13日から2038年1月19日 03:14:07 UTCまでの日付に相当します。この瞬間以降、32ビットタイムスタンプはオーバーフローして負の値に戻ってしまい、更新されていないシステムでソフトウェア障害を引き起こす可能性があります。

この「2038年問題」は、UnixにおけるY2K(2000年問題)に相当するものです。幸いなことに、ほとんどの最新システムは64ビットタイムスタンプに移行しており、数十億年先までの日付を表現できるようになっています。しかし、レガシーシステム、組み込みデバイス、古いソフトウェアは依然として脆弱な可能性があります。日本でも多くの基幹システムやIoT機器が影響を受ける可能性があり、2038年に向けた対応と検証がますます重要になっています。

ミリ秒とタイムスタンプの精度

従来のUnixタイムスタンプは秒単位ですが、多くの最新システムではより高い精度のためにミリ秒精度を使用しています。たとえばJavaScriptは、主にミリ秒タイムスタンプ(10桁ではなく13桁)で動作します。システム間でタイムスタンプをやり取りする際は、秒単位かミリ秒単位かを把握することが重要です。混同すると、日付が1000倍ずれてしまう可能性があります。

さらに高い精度が必要なアプリケーションでは、マイクロ秒(100万分の1秒)やナノ秒(10億分の1秒)を使用する場合もあります。高頻度取引システム、科学計測機器、パフォーマンス監視ツールなどでは、このレベルの精度が求められることがあります。こうした拡張タイムスタンプは、浮動小数点数や、秒部分と小数部分を別々の整数フィールドとして表現するのが一般的です。

主な用途と活用例

Unixタイムスタンプは、ソフトウェア開発のあらゆる場面で使われています。データベースレコードの作成日時や更新日時の記録、cronジョブや遅延タスクのスケジューリング、レスポンスタイムやパフォーマンス指標の計測、分散システム間のイベント同期など、幅広い用途があります。APIもUnixタイムスタンプ形式で時刻を返すことが多く、クライアントの所在地やロケールに関係なく簡単にパースできます。

タイムスタンプは、期間や間隔の計算にも便利です。ユーザーセッションの長さを知りたい場合は、ログアウト時のタイムスタンプからログイン時のタイムスタンプを引くだけです。キャッシュの有効期限が切れたか確認するには、キャッシュのタイムスタンプを現在時刻と比較します。過去24時間以内の注文を検索するには、現在時刻から86,400(1日の秒数)を引いた値より大きいタイムスタンプを検索します。

ユーザー向けアプリケーションでは、タイムスタンプを「2時間前」や「3日後」といった相対的な時間表現に変換することがよくあります。データベースには正確なタイムスタンプを保存しつつ、インターフェースではより直感的な表示を行うことで、使いやすさと正確性を両立できます。タイムスタンプが唯一の真実の情報源として機能し、必要に応じてさまざまな表示形式に変換されます。

ベストプラクティス

Unixタイムスタンプを扱う際は、常にUTCで保存し、表示時にのみローカル時間に変換しましょう。これにより、サマータイムの切り替えに関する曖昧さを避け、データをタイムゾーン間で移植可能にできます。秒単位かミリ秒単位かを明確にし、2038年問題に備えて64ビット整数を使用しましょう。

タイムスタンプをユーザーに表示する際は、文脈を提供しましょう。「1672531200」のような生のタイムスタンプはほとんどの人にとって意味がないため、対象ユーザーに適した読みやすい形式に変換します。混乱の可能性がある場合はタイムゾーンを明記し、絶対時間(「2023年1月1日 21:00 JST」)と相対時間(「3ヶ月前」)の両方を表示することで、最大限の明瞭さを確保しましょう。

最後に、Unixタイムスタンプはうるう秒を考慮していないことを覚えておきましょう。うるう秒は、UTCを地球の自転と同期させるために行われる時折の1秒の調整です。ほとんどのアプリケーションでは問題になりませんが、精密な科学的計時が必要な場合や、うるう秒を考慮するシステムと連携する場合は、この制限を認識しておく必要があります。

よくある質問

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

Unixタイムスタンプ(エポック時間、POSIX時間とも呼ばれる)は、1970年1月1日 00:00:00 UTCから経過した秒数です(うるう秒は含みません)。たとえば、タイムスタンプ「1672531200」は2023年1月1日 午前0時(UTC)を表します。タイムゾーンやカレンダー体系に依存しない、普遍的な時刻表現方法です。

なぜUnix時間は1970年1月1日が起点なのですか?

1970年代初頭にベル研究所でUnixオペレーティングシステムが開発された際、時刻システムの基準点が必要でした。開発者たちは、覚えやすく切りの良い直近の日付として1970年1月1日を選びました。この日付は以降、ほとんどのコンピュータシステムの標準的なエポックとなっています。

Unixタイムスタンプを日付に変換するには?

ほとんどのプログラミング言語には変換用の組み込み関数があります。JavaScriptではnew Date(timestamp * 1000)(JavaScriptはミリ秒を使用するため1000を掛けます)、Pythonではdatetime.fromtimestamp(timestamp)、SQLではFROM_UNIXTIME()やto_timestamp()で変換できます。当サイトの変換ツールを使えば、複数の出力形式で瞬時に変換できます。

2038年問題とは何ですか?

32ビットの符号付き整数では、Unixエポックからの秒数を最大2,147,483,647まで(2038年1月19日 03:14:07 UTC)しか表現できません。この瞬間以降、32ビットタイムスタンプはオーバーフローします。解決策は64ビットタイムスタンプへの移行で、数十億年先の日付まで表現可能になります。

秒単位とミリ秒単位のタイムスタンプの違いは?

従来のUnixタイムスタンプは秒単位(2020〜2030年頃では10桁)ですが、JavaScriptなど一部のシステムではミリ秒単位(13桁)を使用します。タイムスタンプを変換する際は、どちらの形式かを確認することが重要です。変換結果が1970年頃や遠い未来の日付になる場合は、秒とミリ秒を取り違えている可能性があります。