エポック秒(UNIX時間・POSIX時間)とは?わかりやすく解説!

この記事では『エポック秒(UNIX時間・POSIX時間)』について、

  • エポック秒(UNIX時間・POSIX時間)とは
  • エポック秒(UNIX時間・POSIX時間)は「閏秒(うるう秒)」を考慮していないこと

などを図を用いて分かりやすく説明するように心掛けています。ご参考になれば幸いです。

エポック秒(UNIX時間・POSIX時間)とは

エポック秒(UNIX時間・POSIX時間)とは

エポック秒は「協定世界時(UTC)の1970年1月1日午前0時0分0秒」からの経過した秒数です。エポック秒はUNIX時間、UNIX時刻、POSIX時間などとも呼ばれています。

例えば、「1970年1月1日午前0時0分1秒(UTC)」の場合、エポック秒は「1」となります。「1970年1月1日午前0時1分0秒(UTC)」の場合、1分は60秒なので、エポック秒は「60」となります。

この記事を書いている「2023年4月3日午後7時46分00秒(UTC)」のエポック秒は「1680551160」となりました。つまり、「2023年4月3日午後7時46分00秒(UTC)」からこれだけの秒数が経過したということになります。

補足

  • エポック秒はコンピュータにおける日時表現の一つで、主にUNIX系OSで標準的に使われている形式となっています。
  • 基準となる「1970年1月1日午前0時0分0秒(UTC)」は「UNIXエポック(UNIX Epoch)」や「POSIXエポック(POSIX Epoch)」と言います。
  • 「協定世界時(UTC)の1970年1月1日午前0時0分0秒」からの経過時間をミリ秒で表した「エポックミリ秒」もあります。エポックミリ秒はエポック秒と同様の基準を持ちますが、より高い精度で時間を表現できます。
  • UTCは「Coordinated Universal Time」の略です。
  • POSIXは「Portable Operating System Interface」の略です。POSIXは異なるUNIX系OS間でアプリケーションの移植性を高めるために、プログラムからの呼び出し方法などの定義したIEEEの標準規格です。
  • UNIX時間は英語では「UNIX Time」と書きます。
  • POSIX時間は英語では「POSIX Time」と書きます。

エポック秒(UNIX時間・POSIX時間)は「閏秒(うるう秒)」を考慮していない

エポック秒(UNIX時間・POSIX時間)」では、閏年(うるう年)は考慮するが、閏秒(うるう秒)は考慮しないため、実際の経過時間を表すわけではありません。

閏秒を考慮していないため、1日は必ず「86,400秒(60秒×60分×24時間)」となっています。これにより、簡単な計算でUTCとエポック秒(UNIX時間・POSIX時間)の相互変換が可能になっています。

例えば、「2023年1月1日午前0時0分0秒(UTC)」はエポック秒(UNIX時間・POSIX時間)では、

\begin{eqnarray}
(53{\mathrm{[年]}}×365{\mathrm{[日/年]}}+13{\mathrm{[日]}})×86,400{\mathrm{[秒/日]}}=1,672,531,200{\mathrm{[秒]}}
\end{eqnarray}

となります。この変換では、過去に何度閏秒があったかを考慮する必要はありません。なお、上式において、13日は「1970年1月1日」から「2023年1月1日」までの閏日の数となっています。

また、閏秒を考慮していないので、「閏秒の瞬間のエポック秒」は「閏秒1秒前のエポック秒」と同じになります。

下表にUTCとエポック秒の関係を示しています。「閏秒の瞬間のエポック秒(2016年12月31日23時59分60秒)」は「閏秒1秒前のエポック秒(2016年12月31日23時59分59秒)」と同じになっていることがわかります。

UTCエポック秒
2016年12月31日23時59分59秒1483228799
2016年12月31日23時59分60秒1483228799
2017年01月01日00時00分00秒1483228800

補足

  • 閏秒を考慮していないため、閏秒が挿入された後は調整しないと実際の経過時間とは1秒ずれた状態になります。
  • 閏秒には「正の閏秒」と「負の閏秒」の2種類があります。「正の閏秒」は「59分60秒」が挿入され、一方、「負の閏秒」は「59分59秒」が削除されます。ただし、2023年までの歴史では、負の閏秒が実施された例はありません。

本記事のまとめ

この記事では『エポック秒(UNIX時間・POSIX時間)』について、以下の内容を説明しました。

  • エポック秒(UNIX時間・POSIX時間)とは
  • エポック秒(UNIX時間・POSIX時間)は「閏秒(うるう秒)」を考慮していないこと

お読み頂きありがとうございました。