D. J. Bernstein
UNIX
daemontools

tai64nlocal プログラム

tai64nlocal は正確な TAI64N 形式のタイムスタンプを人が読める形式に変換します。

使い方

tai64nlocal は標準入力から行を読み込みます。 行が @ で始まっていなければ、tai64nlocal はその行をそのまま標準出力に書き出します。 行が @ で始まっていれば、tai64nlocaltai64n によって出力された形式である @ の後のタイムスタンプを探し、そのタイムスタンプを ISO 形式 YYYY-MM-DD HH:MM:SS.SSSSSSSSS のローカルタイムに変換して、その行を標準出力に書き出します。

例えば、US/Pacific タイムゾーンでは、入力行

     @4000000037c219bf2ef02e94 mark
     1999-08-23 21:03:43.787492500 mark
のように出力されるはずです。 しかし、tai64nlocal の現在の実装はローカルタイムを求める UNIX の localtime ライブラリ・ルーチンに依存することに気をつけてください。 localtime の実装の中には閏秒を計算していない壊れた時間尺を使っているものもあります。 (最新の閏秒の表を持っている) Olson の tz ライブラリを使っているシステムでは、タイムゾーンを例えば、US/Pacific の代わりに right/US/Pacific に設定することによりこの問題を修正することができます。

大抵の localtime の実装は 2038 年には対応してないことに気をつけてください。

入力の終りに達したら、tai64nlocal はコード 0 で終了します。 標準入力から読んだり、標準出力へ書いたりするときに問題が生じたら、エラーメッセージを出力せずにコード 111 で終了します。

tai64nlocal は起動後に一切メモリを割り当てません。 しかし、もしかしたら localtime の内部では割り当てているかも知れません。


訳:滝澤 隆史
Last modified: Wed Apr 19 14:40:02 2000