Unix時刻(POSIXエポック時刻)
Unix時刻は、エポックである1970年1月1日00:00:00 UTCからの経過秒数を数える方式です。Unix系システム、プログラミング、ネットワークプロトコルで広く使われる簡潔なタイムスタンプ規約です。
概要
Unix時刻は、エポックと呼ばれる定められた起点からの経過秒数を、単一の整数で表して時点を表現する方式である。このエポックは、協定世界時では一般に1970-01-01 00:00:00と表記される瞬間である。Unix時刻は、タイムスタンプを保存・比較するためのコンパクトで言語に依存しない方法を提供するため、オペレーティングシステム、プログラミング言語、データベース、インターネットプロトコルで広く使用されている。
画像ギャラリー
2 画像特性と表現
一般的な実装では、Unix時刻は秒を数える符号付き整数として保存される。多くのシステムはPOSIXの解釈に従い、時折挿入されるうるう秒のための追加値を設けず、連続した秒数として扱う。このため、Unix時刻と真の天文学的UTCは、累積したうるう秒の数だけずれる場合がある。表現はサイズと精度によって異なり、APIによっては秒単位の整数を返す一方、秒の小数部を提供するものや、本来の32ビットの制限を大幅に超えて範囲を拡張する64ビット整数を用いるものもある。
簡単な歴史と発展
この規約は、ファイル更新時刻、プロセス開始時刻、その他の時刻データを記録する簡単な方法として、1970年代の初期Unixオペレーティングシステムから発展した。単純な数値形式であるため、保存、ソート、時間間隔の計算が容易であった。やがて多くのプラットフォームやプロトコルにおける事実上の標準となった。現代のシステムでは、POSIX時刻またはエポック時刻と呼ばれることも多い。
用途と例
- ファイルシステムとタイムスタンプ:多くのファイルメタデータ項目はUnix時刻で表される。
- APIとデータベース:タイムスタンプは整数、またはUnix時刻から導かれたISO文字列として交換される。
- コマンドラインユーティリティ:Unix系システムでは、現在の値を確認する一般的な方法としてシェルコマンドdate +%sがある。多くの言語にはエポック秒を取得する直接的な関数が用意されている。
- ネットワークプロトコルとログ:コンパクトな数値エポックにより、時刻の順序付けと算術処理が簡素になる。
計時規約とその相違については、UTCなどの時刻標準に関する一般的な資料や、Unix系システムに関する資料を参照できる。
主な問題点と区別
実用上の注意点として、しばしば二つの点が論じられる。第一に、実装がうるう秒を無視する場合、その扱いによりUnix時刻は常に瞬間ごとにUTCと一致するわけではない。第二に、32ビット符号付き整数を用いる古いシステムでは2038年にオーバーフローが発生する(「2038年問題」)。この制限は今日では64ビット型の使用によって対処されている。こうした問題があるにもかかわらず、Unix時刻は多くの用途で簡潔かつ相互運用可能な選択肢であり続けている。
関連項目
著者
AlegsaOnline.com Unix時刻(POSIXエポック時刻) Leandro Alegsa
URL: https://ja.alegsaonline.com/art/103398
出典
- pubs.opengroup.org : "The Open Group Base Specifications Issue 7, section 4.16 Seconds Since the Epoch"