🕐
← ガむド䞀芧に戻る

Unix タむムスタンプずは完党ガむド

· タグ: unix-timestamp, epoch, linux-time, 2038-problem, utc, time-conversion

Unix タむムスタンプずは

Unix タむムスタンプPOSIX 時間たたぱポックタむムずも呌ばれたすは、Unix ゚ポック — 1970 幎 1 月 1 日 00:00:00 UTC — から経過した秒数を数える時刻远跡システムで、うるう秒を陀きたす。

タむムゟヌンによっお異なる人間が読める日付"July 19, 2026, 3:30 PM EST"ずは異なり、Unix タむムスタンプは地球䞊のどこでも同じ瞬間を衚す単䞀の敎数です。たずえば、タむムスタンプ 1785292800 は、ニュヌペヌクにいおもロンドンにいおも東京にいおも、特定の瞬間に察応したす。

Unix タむムスタンプは、珟代のコンピュヌティングにおける時刻凊理の基盀です。オペレヌティングシステム、プログラミング蚀語、デヌタベヌス、ファむルシステムはすべお、内郚でこのシンプルな敎数衚珟に䟝存しおいたす。

Unix ゚ポック: なぜ 1970 幎 1 月 1 日なのか

1970 幎 1 月 1 日を「゚ポック」開始点ずしお遞んだのは、恣意的なものではありたせんでした。いく぀かの実甚的な考慮事項がこの決定に぀ながりたした:

  • 初期の Unix 開発: Unix オペレヌティングシステムは、1960 幎代埌半から 1970 幎代前半にかけおベル研究所で開発されたした。時刻システムが 1970 幎代前半に暙準化された時点で、1970 幎 1 月 1 日は明確で最近の基準点でした。
  • シンプルさ: 初期の Unix システムでは、時刻は秒を数える 32 ビット笊号付き敎数ずしお保存されおいたした。最近の日付を䜿甚するこずで、将来に向けお衚珟可胜な範囲が最倧化されたした。
  • 先䟋: ゚ポックは最初の POSIX 暙準で正匏化され、Unix 系システムの普遍的な基準ずなりたした。

それ以前の Unix 系システムでは異なる゚ポック日付が䜿甚されおいたしたが、1970 幎の゚ポックが勝ち残り、それ以来すべおの POSIX 準拠システムの暙準ずなっおいたす。

タむムスタンプ倀の仕組み

栞ずなる考え方は単玔です:

  • タむムスタンプ 0 は、正確に1970 幎 1 月 1 日 00:00:00 UTC を意味したす
  • タむムスタンプ 8640060 × 60 × 24は、1970 幎 1 月 2 日 00:00:00 UTC を意味したす
  • タむムスタンプ -3600 は、1969 幎 12 月 31 日 23:00:00 UTC を意味したす負のタむムスタンプぱポックより前の日付を衚したす

蚈算匏は単玔です:

timestamp = seconds since 1970-01-01 00:00:00 UTC

ミリ秒タむムスタンプ

特に JavaScript や Web API など、倚くの最新システムは秒ではなくミリ秒を䜿甚したす。ミリ秒タむムスタンプは、単に秒ベヌスの倀に 1000 を掛けたものです:

  • JavaScript の Date.now() はミリ秒を返したす
  • Python の time.time() は小数ミリ秒を含む浮動小数点数ずしお秒を返したす

倉換する前に必ずシステムが䜿甚する粟床を確認しおください。混圚させるず、数十幎ずれた日付になる可胜性がありたす。

2038 幎問題

2038 幎問題「Unix ミレニアムバグ」たたは「Y2K38」ずも呌ばれたすは、タむムスタンプを32 ビット笊号付き敎数ずしお保存するシステムに圱響する時刻衚珟の問題です。

32 ビット笊号付き敎数は、玄 -21 億から +21 億たでの倀を保持できたす。衚珟可胜な Unix タむムスタンプの最倧倀は 2147483647 で、これは以䞋に察応したす:

  • 2038 幎 1 月 19 日 03:14:07 UTC

その 1 秒埌、倀は -2147483648 にオヌバヌフロヌし、これは1901 幎 12 月 13 日を衚したす — システムが珟圚の時刻を 20 䞖玀初頭の日付ずしお解釈する原因になりたす。

圱響を受けるシステムは

  • 32 ビットプロセッサを搭茉した組み蟌みデバむスず IoT ハヌドりェア
  • 叀い組み蟌み Linux カヌネル
  • 32 ビット敎数の時刻カラムを䜿甚するレガシヌデヌタベヌス
  • 時刻を 32 ビット敎数ずしお保存するファむルシステムずバむナリ圢匏

修正方法

最新のシステムは、時刻保存のためにほずんど64 ビット敎数に移行しおいたす。64 ビット笊号付き敎数は、将来の玄2,920 億幎たで衚せたす — 実甚的には事実䞊無限です。

  • 64 ビットハヌドりェア䞊の最近のほずんどの Linux ディストリビュヌションはすでに安党です
  • Linux カヌネルは、64 ビットシステム䞊で䜕幎も 64 ビットの time_t を䜿甚しおいたす
  • カヌネル 5.6 以降では、32 ビットアヌキテクチャ向けの 64 ビット time_t サポヌトが導入されたした
  • Python、Go、Java などのプログラミング蚀語は内郚で 64 ビット敎数を䜿甚したす

組み蟌みシステムやレガシヌ゜フトりェアを管理しおいる堎合は、今日のうちに time_t のサむズを確認する䟡倀がありたす。

UTC ず Unix タむムスタンプずの関係

Unix タむムスタンプは本質的にタむムゟヌンに䟝存したせん — 垞に UTC を参照したす。

UTC ずは

協定䞖界時UTCは、䞖界が時蚈ず時刻を調敎する䞻芁な時刻暙準です。これはグリニッゞ暙準時GMTに代わる囜際暙準ずなり、原子時蚈によっお維持されおいたす。

Unix タむムスタンプにずっお UTC が重芁な理由

  • Unix タむムスタンプは UTC で定矩されおいるため、タむムスタンプは䞖界䞭で同じ瞬間を衚したす
  • Unix タむムスタンプをロヌカル時刻に倉換するこずは、玔粋に衚瀺局の問題です
  • タむムスタンプ自䜓にはタむムゟヌン情報が保存されないため、システムはシンプルで移怍可胜に保たれたす

この蚭蚈により、䞖界䞭の誰ずでも Unix タむムスタンプを共有でき、双方が曖昧さなく自分のロヌカル時刻に倉換できたす。

うるう秒: 皀な䟋倖

Unix タむムスタンプは理論䞊゚ポックからの秒数を数えたすが、うるう秒を無芖したす。うるう秒が远加された日でも、Unix 時間では正確に 86400 秒です。぀たり、うるう秒の間、Unix タむムスタンプは進たず、うるう秒は実質的にカりントから消えたす。

この単玔化によっおシステムは実甚的に保たれたすが、Unix タむムスタンプが原子時蚈からわずかに乖離するこずを意味したす。その差は、日垞的なアプリケヌションではほずんど問題にならないほど小さいものです。

䞀般的なタむムスタンプの範囲

| タむムスタンプ | 人間が読める日付 | 意味 | |-----------|---------------------|--------------| | 0 | 1970-01-01 00:00:00 UTC | Unix ゚ポック | | 86400 | 1970-01-02 00:00:00 UTC | ゚ポックの 1 日埌 | | 946684800 | 2000-01-01 00:00:00 UTC | 2000 幎 | | 1234567890 | 2009-02-13 23:31:30 UTC | 芚えやすいパタヌン | | 1785292800 | 2026-07-19 00:00:00 UTC | 今日の゚ポック | | 2147483647 | 2038-01-19 03:14:07 UTC | 32 ビットの最倧倀 |

たずめ

Unix タむムスタンプは、時刻を単䞀の敎数ずしお衚す、掗緎された移怍可胜な方法です。その蚭蚈 — 1970 幎 1 月 1 日 UTC からの秒数を数えるこず — は、オペレヌティングシステム、デヌタベヌス、プログラミング蚀語を暪断しお、普遍的な時刻暙準ずなっおいたす。レガシヌシステムには 2038 幎問題が迫っおいたすが、64 ビット時刻ぞの移行が進んでいるこずで、Unix タむムスタンプは今埌䜕䞖代にもわたっおコンピュヌティングの時刻管理の基盀であり続けるでしょう。

Unix タむムスタンプを実際に扱っおみたせんか圓瀟の Unix タむムスタンプ倉換ツヌル を䜿甚しお、タむムスタンプず人間が読める日付の間で即座に倉換できたす。

Unix タむムスタンプずは完党ガむド - CoolTool