<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> <dfn>TAI64</dfn> は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">djb</anchor> が用いている<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">日時形式</anchor>です。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TAI</anchor> における1970年1月1日0時0分0秒からの経過を表す<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">整数時刻系</anchor>です。</p><section><h1>仕様書</h1><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> (<time>2000-02-29 11:01:50 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://cr.yp.to/libtai/tai64.html">https://cr.yp.to/libtai/tai64.html</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> (<time>2000-02-29 11:01:48 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://cr.yp.to/daemontools/tai64n.html">https://cr.yp.to/daemontools/tai64n.html</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> (<time>2000-03-05 07:03:59 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://cr.yp.to/daemontools/tai64nlocal.html">https://cr.yp.to/daemontools/tai64nlocal.html</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> <cite>TAI64</cite>
(<time>1999-08-30 03:53:44 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://cr.yp.to/proto/tai64.txt">https://cr.yp.to/proto/tai64.txt</anchor-external></li></ul></refs></section><section><h1>形式</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">秒</anchor>単位の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TAI64</anchor> の他に、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ナノ秒</anchor>単位の <dfn>TAI64N</dfn>、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アト秒</anchor>単位の <dfn>TAI64NA</dfn> があります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> それぞれ内部形式により保持するデータを
「TAI64 label」のように呼び、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">情報交換</anchor>用の記述形式を
「external TAI64 format」のように呼んでいます。 </p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> external format
は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">大エンディアン</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">16進数</anchor>表記の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">数値</anchor>列となっています。</p></section><section><h1>応用</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">qmail</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">daemontools</anchor> などの <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">djb</anchor> 製品で使われています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> <cite>TAICLOCK</cite>, <time>1997-08-14T22:55:16.000Z</time>, <time>2023-04-02T11:16:59.459Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://cr.yp.to/proto/taiclock.txt">https://cr.yp.to/proto/taiclock.txt</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> それ以外では滅多に見かけません。</p></section><section><h1>評価</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> 多くの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">日時形式</anchor>は究極的には <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTC</anchor> をベースにしていますが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TAI64</anchor> は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TAI</anchor> をベースにしている珍しい例です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">daemontools</anchor> では<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ログファイル</anchor>の正確な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">日時</anchor>の記録のために使われていますが、
通常の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">テキストファイル</anchor>としての表示により<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">人間</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">日時</anchor>を読み取ることができないため、
システム管理者の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">daemontools</anchor> の評判を落とす一因ともなっています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unix</anchor> で動作する製品でよく使われるにも関わらず、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unix</anchor> が採用する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">閏秒のない時刻系</anchor>ではなく、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TAI</anchor> を採用しています。そのため <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unix time</anchor> との換算
(ひいては <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTC</anchor> や各国<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">標準時</anchor>との換算) は単純な計算では行えず、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">閏秒</anchor>の表が必要となります。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unix</anchor> など<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">閏秒のない時刻系</anchor>で動作する (ほとんどすべての)
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プラットフォーム</anchor>上で本形式を扱うには、
定期的に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">閏秒</anchor>表を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">更新する仕組み<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">ロケールの更新</title></anchor>が必要です。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> 異なる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">閏秒</anchor>表を持ったシステムで他の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">日時形式</anchor>と換算すると、
異なる結果になっているおそれがあります。</comment-p></section><section><h1>その他の TAI 元期の Unix time 変種</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unix time</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">元期</anchor>は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTC</anchor> で定められていますが、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TAI</anchor> に差し替えたのが
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TAI64</anchor> です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TAI64</anchor> 以前にも同様のものがあったようです。</p><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="28" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[28]</anchor-end> (<time>2001-11-11 14:06:55 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://cr.yp.to/proto/utctai.html">http://cr.yp.to/proto/utctai.html</anchor-external></figcaption><blockquote><p>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.</p><p>Arthur David Olson's popular time library uses an epoch of 1970-01-01 00:00:10 TAI.</p></blockquote></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">djb</anchor> はこれに倣って <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TAI64</anchor> を定義したということでしょうか。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> Olson の時刻ライブラリーというのは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">tzcode</anchor> のことなのでしょうか?</p><hr></hr><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="47" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[47]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PTP</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">元期</anchor>も<time>西暦1970年1月1日0時 TAI<attrvalue xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">1970-01-01T00:00:00</attrvalue></time>です。</p></section><section><h1>メモ</h1><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> (<time>2000-02-29 11:01:48 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://cr.yp.to/daemontools/tai64n.html">https://cr.yp.to/daemontools/tai64n.html</anchor-external></figcaption><blockquote><p>tai64n reads lines from stdin. For each line, it writes</p><p>an @,</p><p>a precise timestamp,</p><p>a space, and</p><p>a copy of the input line</p><p>to stdout. The timestamp indicates the moment that tai64n read the first character of the line.</p></blockquote></figure></section></body></html>