TAI64

TAI64

[6] TAI64 は、 djb が用いている日時形式です。 TAI における1970年1月1日0時0分0秒からの経過を表す整数時刻系です。

仕様書

形式

[7] 単位の TAI64 の他に、ナノ秒単位の TAI64Nアト秒単位の TAI64NA があります。

[13] それぞれ内部形式により保持するデータを 「TAI64 label」のように呼び、情報交換用の記述形式を 「external TAI64 format」のように呼んでいます。

[14] external format は大エンディアン16進数表記の数値列となっています。

応用

[8] qmaildaemontools などの djb 製品で使われています。

[16] TAICLOCK, , https://cr.yp.to/proto/taiclock.txt

[15] それ以外では滅多に見かけません。

評価

[11] 多くの日時形式は究極的には UTC をベースにしていますが、 TAI64TAI をベースにしている珍しい例です。

[9] daemontools ではログファイルの正確な日時の記録のために使われていますが、 通常のテキストファイルとしての表示により人間日時を読み取ることができないため、 システム管理者の daemontools の評判を落とす一因ともなっています。

[10] Unix で動作する製品でよく使われるにも関わらず、 Unix が採用する閏秒のない時刻系ではなく、 TAI を採用しています。そのため Unix time との換算 (ひいては UTC や各国標準時との換算) は単純な計算では行えず、 閏秒の表が必要となります。 Unix など閏秒のない時刻系で動作する (ほとんどすべての) プラットフォーム上で本形式を扱うには、 定期的に閏秒表を更新する仕組みが必要です。

[12] 異なる閏秒表を持ったシステムで他の日時形式と換算すると、 異なる結果になっているおそれがあります。

その他の TAI 元期の Unix time 変種

[17] Unix time元期UTC で定められていますが、 TAI に差し替えたのが TAI64 です。

[18] TAI64 以前にも同様のものがあったようです。

[28] () http://cr.yp.to/proto/utctai.html

What is the epoch? Originally it was defined as the beginning of 1970 GMT. GMT, Greenwich Mean Time, is a traditional term for the time zone in England. Unfortunately, it is ambiguous; it can refer to a variety of astronomical time scales.

Arthur David Olson's popular time library uses an epoch of 1970-01-01 00:00:10 TAI.

[19] djb はこれに倣って TAI64 を定義したということでしょうか。

[20] Olson の時刻ライブラリーというのは tzcode のことなのでしょうか?


[47] PTP元期です。

メモ

[5] () https://cr.yp.to/daemontools/tai64n.html

tai64n reads lines from stdin. For each line, it writes

an @,

a precise timestamp,

a space, and

a copy of the input line

to stdout. The timestamp indicates the moment that tai64n read the first character of the line.