Unixエポック時間の解説

Unixエポック時間とは何か、なぜ1970年1月1日から始まるのか、すべての主要なオペレーティングシステムとプログラミング言語でどのように使用されているかを学びます。

Fundamentals

詳細な説明

Unixエポック時間とは?

Unixエポック時間(POSIX時間またはUnix時間とも呼ばれる)は、Unixエポック(1970年1月1日00:00:00 UTC)からの経過秒数として時間を追跡するシステムです。その正確な瞬間にエポック値は0でした。1分後は60、1時間後は3600、1日後は86400でした。

なぜ1970年1月1日なのか?

この日付はBell Labsの初期のUnix開発者によって選ばれました。Ken ThompsonとDennis Ritchieが1960年代後半にオリジナルのUnixシステムを設計した際、基準点が必要でした。1970年の選択は実用的なものでした — ストレージに使用した32ビット符号付き整数が将来(2038年まで)の合理的な範囲をカバーできる、切りの良い近い日付でした。

エポック時間の仕組み

Epoch = 0           → 1970-01-01 00:00:00 UTC
Epoch = 86400       → 1970-01-02 00:00:00 UTC
Epoch = 1000000000  → 2001-09-09 01:46:40 UTC
Epoch = 1700000000  → 2023-11-14 22:13:20 UTC

すべてのタイムスタンプは、その起点からの秒数のカウントに過ぎません。負の値は1970年以前の日付を表します。このシステムは常にUTCからカウントするためタイムゾーンに依存せず、分散システム間での時間の保存と比較に理想的です。

秒 vs ミリ秒

従来のUnixエポックはをカウントしますが、多くのモダンな環境(JavaScript、Java、特定のデータベース)はエポックからのミリ秒を使用します。秒ベースのタイムスタンプは10桁(例:1700000000)で、ミリ秒ベースは13桁(例:1700000000000)です。1000倍のエラーを避けるために、システムが期待する単位を常に確認してください。

なぜ重要なのか

エポック時間はコンピューティングにおける時間表現の共通言語です。APIはこれを交換し、データベースはこれをインデックスし、ログファイルはこれを記録し、cronジョブはこれを中心にスケジュールします。エポック時間の理解は、時間関連の問題をデバッグするための基本です。

ユースケース

サーバーログ、APIレスポンス、データベースレコード、または時間を整数として保存するシステムでタイムスタンプがどのように機能するかを理解する必要があるときにこのリファレンスを使用してください。バックエンド開発者、DevOpsエンジニア、分散システムを扱うすべての方にとって必須の知識です。

試してみる — Epoch Countdown

フルツールを開く