[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

28.9 Unix 紀元 (the Epoch) からの秒数

@’ に数値を続けると、それは、秒数として、システム内部で使われるタイムスタンプを表すことになる。 数値には、小数点 (‘.’ または ‘,’) が含まれていてもよい。 内部表現がサポートしていない余分な精度は、マイナスの無限に向けて切り詰められる。 ‘@’ で始まるこうした数値は、他の日付項目のいかなるものとも組み合わせて使うことができない。 欠けるところのない完全なタイムスタンプの指定だからである。

コンピュータの内部では、時間は、ある紀元 (an epoch) — きちんと定義された時間中のある一点 — からの秒数として表現されている。 GNU や POSIX のシステムでは、紀元は 1970-01-01 00:00:00 UTC である。 従って、‘@0’ はその時刻を表し、‘@1’ は 1970-01-01 00:00:01 UTC を表す、以下同様ということになる。GNU を始め、POSIX に準拠したほとんどのシステムでは、 POSIX に対する拡張として、こうした時間表記をマイナスの秒数を使うことも含めて、サポートしている。 従って、‘@-1’ は 1969-12-31 23:59:59 UTC を表すことになる。

旧来の Unix システムでは、秒を 32 ビットの 2 の補数である整数で数えており、 1901-12-13 20:45:52 から 2038-01-19 03:14:07 UTC まで表すことができる。 もっと新しいシステムでは、64 ビットの秒数計算を、ナノセコンドのサブカウント付きで使用しており、 宇宙の寿命として知られている時間のうちのあらゆる時刻を 1 ナノセコンドの精密さで表すことができる。

ほとんどのホストのこうした計算では、閏秒の存在が無視されている。 たとえば、ほとんどのホストで ‘@915148799’ は 1998-12-31 23:59:59 UTC を表し、‘@915148800’ は 1999-01-01 00:00:00 UTC を表している。 従って、間にある 1998-12-31 23:59:60 UTC という閏秒を表現する方法は存在しない。


This document was generated on June 7, 2022 using texi2html 1.82.