/
35.txt
75 lines (55 loc) · 2.97 KB
/
35.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
[6] [DFN[TAI64]] は、 [[djb]] が用いている[[日時形式]]です。
[[TAI]] における1970年1月1日0時0分0秒からの経過を表す[[整数時刻系]]です。
* 仕様書
[REFS[
- [1] ([TIME[2000-02-29 11:01:50 +09:00]])
<https://cr.yp.to/libtai/tai64.html>
- [2] ([TIME[2000-02-29 11:01:48 +09:00]])
<https://cr.yp.to/daemontools/tai64n.html>
- [3] ([TIME[2000-03-05 07:03:59 +09:00]])
<https://cr.yp.to/daemontools/tai64nlocal.html>
- [4] [CITE[TAI64]]
([TIME[1999-08-30 03:53:44 +09:00]])
<https://cr.yp.to/proto/tai64.txt>
]REFS]
* 形式
[7] [[秒]]単位の [[TAI64]] の他に、[[ナノ秒]]単位の [DFN[TAI64N]]、
[[アト秒]]単位の [DFN[TAI64NA]] があります。
[13] それぞれ内部形式により保持するデータを
「TAI64 label」のように呼び、[[情報交換]]用の記述形式を
「external TAI64 format」のように呼んでいます。
[14] external format
は[[大エンディアン]]の[[16進数]]表記の[[数値]]列となっています。
* 応用
[8] [[qmail]] や [[daemontools]] などの [[djb]] 製品で使われています。
[16] [CITE[TAICLOCK]], [TIME[1997-08-14T22:55:16.000Z]], [TIME[2023-04-02T11:16:59.459Z]] <https://cr.yp.to/proto/taiclock.txt>
[15] それ以外では滅多に見かけません。
* 評価
[11] 多くの[[日時形式]]は究極的には [[UTC]] をベースにしていますが、
[[TAI64]] は [[TAI]] をベースにしている珍しい例です。
[9] [[daemontools]] では[[ログファイル]]の正確な[[日時]]の記録のために使われていますが、
通常の[[テキストファイル]]としての表示により[[人間]]が[[日時]]を読み取ることができないため、
システム管理者の [[daemontools]] の評判を落とす一因ともなっています。
[10] [[Unix]] で動作する製品でよく使われるにも関わらず、
[[Unix]] が採用する[[閏秒のない時刻系]]ではなく、
[[TAI]] を採用しています。そのため [[Unix time]] との換算
(ひいては [[UTC]] や各国[[標準時]]との換算) は単純な計算では行えず、
[[閏秒]]の表が必要となります。
[[Unix]] など[[閏秒のない時刻系]]で動作する (ほとんどすべての)
[[プラットフォーム]]上で本形式を扱うには、
定期的に[[閏秒]]表を[[更新する仕組み][ロケールの更新]]が必要です。
;; [12] 異なる[[閏秒]]表を持ったシステムで他の[[日時形式]]と換算すると、
異なる結果になっているおそれがあります。
* メモ
[FIG(quote)[
[FIGCAPTION[
[5] ([TIME[2000-02-29 11:01:48 +09:00]])
<https://cr.yp.to/daemontools/tai64n.html>
]FIGCAPTION]
> 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.
]FIG]