エポック タイムスタンプを解説:Unix 時間、POSIX 時間、1970 年以降の秒

エポック タイムスタンプは、ある瞬間を固定の起点からの経過時間として表すコンパクトな方法です。このガイドは Unix 時間、POSIX タイムスタンプ、Unix エポックの日付、そしてなぜ 1970 年 UTC からの秒がソフトウェアの既定になったのかを説明します。

epoch タイムスタンプとは?

epoch タイムスタンプは、エポックと呼ばれる固定の基準時点から測った数値の経過量です。開発者の日常的な用法では、epoch タイムスタンプは通常 Unix タイムスタンプを指します:1970 年 1 月 1 日 00:00:00 UTC からの秒数です。値 0 はちょうど Unix エポックです。正の値は 1970 年以降、負の値はそれ以前を表します。

Unix 時間 vs POSIX タイムスタンプ

Unix 時間と POSIX タイムスタンプは、アプリケーションコードでは通常同じ意味で使われます。どちらも Unix エポックからの経過秒を指し、civil time を単純にするためうるう秒は無視します。実用上は、OS・言語・データベース・API・ログファイルをまたいで使える安定した整数になります。

  • Unix エポック日:1970-01-01 00:00:00 UTC
  • Unix タイムスタンプ 0:Unix エポックのちょうど開始点
  • POSIX タイムスタンプ:POSIX 互換システムでの Unix エポックからの秒
  • epoch ミリ秒:同じエポックだが、ミリ秒で数える
  • epoch マイクロ秒・ナノ秒:データベースやトレースのための高精度

なぜ 1970 年起点のタイムスタンプが標準になったか

Unix エポックは初期の Unix システムにとって実用的で、Unix の考え方が C ライブラリ・Linux・データベース・Web サーバー・プログラミング言語へ広がるにつれ慣習となりました。単一の数値タイムスタンプは、ローカライズされた日付文字列よりも並べ替え・比較・送信・保存が容易です。

epoch タイムスタンプの例

いくつかの既知の値があると定義を覚えやすくなります。

  • 0 = 1970-01-01 00:00:00 UTC
  • 1 = 1970-01-01 00:00:01 UTC
  • 86400 = 1970-01-02 00:00:00 UTC
  • 1700000000 = 2023-11-14 22:13:20 UTC
  • 1767225600 = 2026-01-01 00:00:00 UTC

epoch タイムスタンプ FAQ

エポック時間は Unix 時間と同じ?
開発者の一般的な用法では同じです。エポック時間は通常 Unix 時間を指します:1970-01-01 00:00:00 UTC からの経過秒です。
Unix 時間の定義は?
Unix 時間は、うるう秒を数えず 1970-01-01 00:00:00 UTC からの秒として定義されます。
POSIX タイムスタンプはタイムゾーンを意識する?
いいえ。POSIX タイムスタンプは 1 つの瞬間を表します。タイムゾーンは、その瞬間を読みやすい日付に整形するときにのみ適用されます。
epoch タイムスタンプは Windows・Linux・macOS で同じ?
Unix エポック(1970-01-01 00:00:00 UTC)は現代のプラットフォームと言語で同一なので、同じ瞬間ならどこでも同じ Unix タイムスタンプになります。Windows は内部で独自の FILETIME エポック(1601)を使いますが、標準の Unix・POSIX タイムスタンプは 1970 年を使います。