<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="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> 多くの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイル</anchor>を扱うシステムに<dfn>ファイルの時刻</dfn>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>がいくつかあります。</p><section><h1>種別</h1><p><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> ほとんどが</p><ul><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">birthtime</anchor> : 作成日時</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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">mtime</anchor> : 変更日時</li><li><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ctime</anchor> : 属性を含む変更日時</li><li><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">atime</anchor> : 最終読取日時</li></ul><p>... のいずれかに分類できます。</p><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:">プラットフォーム</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>によって異なります。</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:">NTFS</anchor> では <code>$STANDARD_INFORMATION</code> (ファイルの内容のデータ側)
と 
<code>$FILE_NAME</code> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイル名</anchor>側)
にそれぞれ4種類あります。
大まかに言って、内容が変更されれば両者が変更され、
ファイル操作が行われると後者が変更されます。
ファイル1個の情報の読み書きでは基本的に前者が使われ、
ファイル一覧の表示では後者が使われます。
<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="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:">FATの日時形式</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>かもわかりません。</p><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:">利用者</anchor>に表示するときは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">システムの時間帯</anchor>に合わせて表示されます。</p><p><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:">ZIP</anchor> のように、古くからある標準の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイルの時刻</anchor>は <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal>
で、後から拡張として追加された (つまりすべての <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ZIPファイル</anchor>に含まれるわけではない)
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイルの時刻</anchor>は <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;11</anchor-internal> で両方が共存しているという<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">書庫形式</anchor>もあります。</p></section><section><h1>データ形式</h1><figure class="short list"><figcaption><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:">ファイルの時刻</anchor>に関係する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロトコル要素</anchor>と機能</figcaption><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FATの日時形式</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NTFSの日時形式</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unix time</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HFSの日時形式</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">i-node</anchor></li><li><code>Content-Disposition</code></li><li><code>Last-Modified</code></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ZIP</anchor></li><li><code>stat</code></li><li><code>touch</code></li><li><code>ls</code></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロパティ (Windows)</anchor></li></ul></figure><section><h1>日時の換算</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="190" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[190]</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> (<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><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="191" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[191]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OS</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:">日時データ型</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><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="192" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[192]</anchor-end> 
個別具体的には各項を参照されたいのですが、概略して次のような事項に配慮が必要です。</p><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="193" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[193]</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>情報のない<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:">プロトコル</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>の情報を保持できることもあります。<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="194" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[194]</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>をどう解釈するか、です。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="204" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[204]</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>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">地方時</anchor>であるか否か、といった<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">時差の記述</anchor>をどうするか。</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="195" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[195]</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>次第で表現できる最小と最大の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">日時</anchor>がまったく異なります。<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="196" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[196]</anchor-end> 入力データに内部データ型で扱えない値が出現したときにどうするか。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="197" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[197]</anchor-end> 内部データ型に出力できない値が出現したときにどうするか。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="199" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[199]</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>か、仕様が曖昧で実装が割れているときどうするか。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="198" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[198]</anchor-end> <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</n> のような値が特殊な意味を持たないか。持つとしたらどうするか。</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="200" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[200]</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>次第で表現できる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">日時</anchor>の最小の刻み幅が違うことがあります。<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="201" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[201]</anchor-end> 入力データに内部データ型で扱えない値が出現したときにどうするか。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="202" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[202]</anchor-end> 内部データ型に出力できない値が出現したときにどうするか。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="203" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[203]</anchor-end> 作成 ≦ 修正のような関係が精度の限界によって成立しないときどうするか。</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="205" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[205]</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>は歴史的経緯や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイルシステム</anchor>との互換性などの理由から、
同じ意味の異なる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">日時</anchor>データをいくつも持っていることがあります。<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="206" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[206]</anchor-end> 入力データからどう取捨選択するか。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="207" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[207]</anchor-end> データごとに<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">日時データ型</anchor>が異なるとき、どう取り扱うか。</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="208" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[208]</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>ごとに少しずつ違い、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイルシステム</anchor>にどれを読み書きできるかも少しずつ違います。<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="209" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[209]</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>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイルシステム</anchor>との相互の行き来でどれとどれを対応付けるべきか。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="212" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[212]</anchor-end> 不足するデータを他のデータと同値にするべきか、放置して成り行きに任せるべきか。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="210" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[210]</anchor-end> 日時の大小が意味的に矛盾するときどうするべきか。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="211" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[211]</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>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイル</anchor>に付属する属性データが相違するとき、
どちらを信用するべきか。</li></ul></li></ul></section><section><h1>FAT</h1><p><sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>FATの日時形式</anchor> </sw-see></p><section><h1>他の日時形式との換算</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="171" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[171]</anchor-end> 
<cite><strong>[</strong>PATCH V5 0/4<strong>]</strong> fat: timestamp updates</cite>, <time>2026-01-01T07:40:50.000Z</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://lore.kernel.org/all/2663d3083c4dd62f00b64612c8eaf5542bb05a4c.1538363961.git.sorenson@redhat.com/T/">https://lore.kernel.org/all/2663d3083c4dd62f00b64612c8eaf5542bb05a4c.1538363961.git.sorenson@redhat.com/T/</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="189" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[189]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="188" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;188</anchor-internal></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="213" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[213]</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:">2秒</anchor>未満は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">切り捨て</anchor> :</p><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="214" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[214]</anchor-end> 
<cite xml:lang="en">fs/fat/misc.c - kernel/common - Git at Google</cite>, <time>2026-01-02T09:40:36.000Z</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://android.googlesource.com/kernel/common/%2B/88b912e02d75b/fs/fat/misc.c">https://android.googlesource.com/kernel/common/%2B/88b912e02d75b/fs/fat/misc.c</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="219" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[219]</anchor-end> 
<cite xml:lang="en">c - Unix timestamp to FAT timestamp - Stack Overflow</cite>, <time>2026-01-02T07:33:21.000Z</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://stackoverflow.com/questions/15763259/unix-timestamp-to-fat-timestamp">https://stackoverflow.com/questions/15763259/unix-timestamp-to-fat-timestamp</anchor-external></li></ul></refs><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="215" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[215]</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>を <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">round</anchor> :</p><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="216" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[216]</anchor-end> <cite xml:lang="en">fat-date/src/index.js at master · desaroger/fat-date · GitHub</cite>, <time>2026-01-02T09:28:37.000Z</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://github.com/desaroger/fat-date/blob/master/src/index.js">https://github.com/desaroger/fat-date/blob/master/src/index.js</anchor-external></li></ul></refs><section><h1>地方時の時刻の取り扱い</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="164" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[164]</anchor-end> 
<cite>Re: <strong>[</strong>PATCH<strong>]</strong> fat: Allow out-of-range FAT modification timestamps</cite>, <time>2021-09-02T13:09:07.000Z</time>, <time>2026-01-01T07:21:21.836Z</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://lists.gnu.org/archive/html/grub-devel/2021-09/msg00021.html">https://lists.gnu.org/archive/html/grub-devel/2021-09/msg00021.html</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="165" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[165]</anchor-end> 
<cite xml:lang="en">timezone - VFAT, Linux: Invalid file timestamps shown after a reboot - Unix &amp; Linux Stack Exchange</cite>, <time>2026-01-01T07:28:02.000Z</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://unix.stackexchange.com/questions/640555/vfat-linux-invalid-file-timestamps-shown-after-a-reboot">https://unix.stackexchange.com/questions/640555/vfat-linux-invalid-file-timestamps-shown-after-a-reboot</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="166" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[166]</anchor-end> 
<cite xml:lang="en">c# - How do I get the correct modified datetime of a FAT32 file, regardless of timezone in .NET? - Stack Overflow</cite>, <time>2026-01-01T07:29:49.000Z</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://stackoverflow.com/questions/10068855/how-do-i-get-the-correct-modified-datetime-of-a-fat32-file-regardless-of-timezo">https://stackoverflow.com/questions/10068855/how-do-i-get-the-correct-modified-datetime-of-a-fat32-file-regardless-of-timezo</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="167" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[167]</anchor-end> 
<cite xml:lang="ja-jp">ファイル時間 - Win32 apps | Microsoft Learn</cite>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">stevewhims</anchor>, <time>2025-04-15T10:36:31.000Z</time>, <time>2026-01-01T07:30:33.261Z</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://learn.microsoft.com/ja-jp/windows/win32/sysinfo/file-times?redirectedfrom=MSDN">https://learn.microsoft.com/ja-jp/windows/win32/sysinfo/file-times?redirectedfrom=MSDN</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="168" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[168]</anchor-end> 
<cite xml:lang="en">Handle daylight savings time changes with FAT filesystems · Issue #9227 · syncthing/syncthing</cite>, <time>2026-01-01T07:35:47.000Z</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://github.com/syncthing/syncthing/issues/9227">https://github.com/syncthing/syncthing/issues/9227</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="169" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[169]</anchor-end> 
<cite xml:lang="en">Unwanted full rescan&amp;resync @ SD card @ Syncthing Android after timezone/daylight saving change - Support / Android - Syncthing Community Forum</cite>, <time>2026-01-01T07:36:11.000Z</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://forum.syncthing.net/t/unwanted-full-rescan-resync-sd-card-syncthing-android-after-timezone-daylight-saving-change/21064">https://forum.syncthing.net/t/unwanted-full-rescan-resync-sd-card-syncthing-android-after-timezone-daylight-saving-change/21064</anchor-external></p></section></section></section><section><h1>ZIP</h1><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> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ZIP</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>を表す欄を多数有しています。</p><ul><li><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> last mod file date / last mod file time (date and time fields)<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[61]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FATの日時形式</anchor></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="68" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[68]</anchor-end> 各2バイト</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="114" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[114]</anchor-end> 必須。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[23]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">central directory</anchor> が暗号化され <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">general purpose bit flag 13</anchor>
が masking を表すとき、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">local header</anchor> の値は 0 となる</li></ul></li><li><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> 拡張 <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x000D</n> : <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UNIX</anchor> 用<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="63" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[63]</anchor-end> Atime (File last access time), Mtime (File last modification time)</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="62" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[62]</anchor-end> 各<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">32ビット符号無し整数</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">小エンディアン</anchor><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="67" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[67]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unix time</anchor></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="103" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[103]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号無し整数</anchor>の実装事例 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="102" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;102</anchor-internal></src></li></ul></li><li><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> ほとんど使われていないという。実例未発見。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="96" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[96]</anchor-end> 実装はあるにはあるらしい <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="95" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;95</anchor-internal></src>。 </li></ul></li><li><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> 拡張 <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x000A</n> : <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NTFS</anchor> 用<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="64" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[64]</anchor-end> Mtime (File last modification time), Atime (File last access time), 
Ctime (File creation time)</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="65" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[65]</anchor-end> 各<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">64ビット符号無し整数</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">小エンディアン</anchor><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="66" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[66]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NTFSの日時形式</anchor></li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[22]</anchor-end> 主に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Windows</anchor> で使われる。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="119" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[119]</anchor-end> それなりによく使われているがすごく多いともいえない。</li></ul></li><li><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> 拡張 <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x5455</n> : <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Extended Timestamp Extra Field</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Info-ZIP</anchor>)<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="75" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[75]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">central directory header</anchor> / <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">local header</anchor> : 
ModTime (time of last modification)</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="76" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[76]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">central directory header</anchor> :
ModTime (time of last modification),
AcTime (time of last access),
CrTime (time of original creation)</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="74" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[74]</anchor-end> 各<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">32ビット符号無し整数</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">小エンディアン</anchor><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="73" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[73]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unix time</anchor></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="101" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[101]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号無し整数</anchor>の実装事例 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="100" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;100</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="102" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;102</anchor-internal></src></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="94" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[94]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号付き整数</anchor>とする実装がある <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="93" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;93</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="105" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;105</anchor-internal></src></li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[21]</anchor-end> 主に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unix</anchor> で使われる。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="115" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[115]</anchor-end> それなりによく使われているがすごく多いともいえない。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="77" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[77]</anchor-end> flags でどの時刻が含まれるかを指定できる。5個分、
将来の拡張で時刻の追加ができるとされている。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="80" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[80]</anchor-end> flags は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">local header</anchor> に含まれる時刻を表すとされ、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">central directory header</anchor> は ModTime のみ含められ、
flags は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">local header</anchor> と同じものを記述するとされる。<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="81" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[81]</anchor-end> 実際には <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">local header</anchor> と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">central directory header</anchor>
で flags が異なる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ZIPファイル</anchor>が流通している。</li></ul></li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="37" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[37]</anchor-end> 拡張 <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x5855</n> : <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Info-ZIP Unix Extra Field</anchor><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="83" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[83]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">central directory header</anchor> と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">local header</anchor>
にそれぞれ、 AcTime (time of last access), ModTime (time of last modification)</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="82" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[82]</anchor-end> 各<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">32ビット符号無し整数</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">小エンディアン</anchor><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="85" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[85]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unix time</anchor></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="104" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[104]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号無し整数</anchor>の実装事例 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="102" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;102</anchor-internal></src></li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="116" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[116]</anchor-end> たまに使われている。</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="69" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[69]</anchor-end> 拡張 <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x07C8</n> : <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Info-ZIP Macintosh Extra Field</anchor><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="71" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[71]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">central directory header</anchor> と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">local header</anchor>
にそれぞれ、 各<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">32ビット整数</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">大エンディアン</anchor><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="84" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[84]</anchor-end> おそらく<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号無し整数</anchor></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="70" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[70]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HFSの日時形式</anchor></li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="72" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[72]</anchor-end> <code>CrDat</code> (<code>ioFlCrDat</code>),
<code>MdDat</code> (<code>ioFlMdDat</code>)</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="117" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[117]</anchor-end> 実例未見。</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="38" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[38]</anchor-end> 拡張 <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x334D</n> : <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Info-ZIP Macintosh Extra Field (new)</anchor><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="86" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[86]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">local header</anchor> の Attribs に
FlCrDat (date and time of creation),
FlMdDat (date and time of last modification),
FlBkDat (date and time of last backup)<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="87" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[87]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Mac</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FileTime</anchor> 値</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="88" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[88]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">地方時</anchor></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="89" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[89]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">32ビット符号無し整数</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">小エンディアン</anchor>
Flags により64ビットに切り替えることができるとされる。
ただし Currently は32ビットで future version may 64ビットに対応するとある。</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="90" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[90]</anchor-end>  <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">local header</anchor> の Attribs に
CrGMTOffs, MdGMTOffs, BkGMTOffs
(difference &quot;local <var>...</var> time - UTC&quot;)<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="91" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[91]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">32ビット符号付き整数</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">小エンディアン</anchor></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="92" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[92]</anchor-end> Flags により含めるかどうかを指定できる。</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="118" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[118]</anchor-end> 実例未見。</li></ul></li></ul><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="60" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[60]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ZIP</anchor> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイル</anchor>ごとに <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">central directory header</anchor> と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">local header</anchor>
があります。前者は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ZIP</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>情報各種にも当てはまります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="120" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[120]</anchor-end> 
拡張の日付がどれも使われていない <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ZIPファイル</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>の情報が皆無のことが多いです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="121" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[121]</anchor-end> 
拡張の日付が複数使われる場合もありますが、あまり多くありません。
拡張の日付が使われる場合はほとんどが mtime を指定していますが、
それ以外が指定される場合や、 mtime が 0 の場合もあります。
拡張の mtime と last mod file date / time は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">時差</anchor>を除けば一致すると思われる場合が多いですが、
そうでない場合も散見されます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="136" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[136]</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>で違うケースが散見されます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="135" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[135]</anchor-end> 
last mod file date / time は<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>を算出しこれを検出できる可能性があります。</p><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="36" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[36]</anchor-end> 
<cite>null</cite>, <time>2022-11-01T17:34:41.000Z</time>, <time>2025-12-30T15:47:51.658Z</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://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT">https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="35" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[35]</anchor-end> 
<cite>null</cite>, <time>2020-06-30T08:46:01.000Z</time>, <time>2025-12-30T15:47:33.052Z</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://libzip.org/specifications/extrafld.txt">https://libzip.org/specifications/extrafld.txt</anchor-external></li><li><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> <cite xml:lang="en">zip展開後のタイムスタンプがおかしい · Issue #31 · koron/netupvim</cite>, <time>2025-12-30T14:50:21.000Z</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://github.com/koron/netupvim/issues/31">https://github.com/koron/netupvim/issues/31</anchor-external></li><li><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> <cite xml:lang="en">archive/zip: handle mtime in NTFS/UNIX/ExtendedTS extra fields (18274) · Gerrit Code Review</cite>, <time>2025-12-30T14:50:33.000Z</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://go-review.googlesource.com/c/go/+/18274">https://go-review.googlesource.com/c/go/+/18274</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="79" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[79]</anchor-end> 
<cite xml:lang="en">A non-scientific survey of ZIP Metadata</cite>, <time>2025-12-31T09:27:51.000Z</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://publicobject.com/2024/02/26/zip-metadata/">https://publicobject.com/2024/02/26/zip-metadata/</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="93" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[93]</anchor-end> 
<cite xml:lang="en">X5455_ExtendedTimestamp (The Adobe Experience Manager SDK 2022.11.9850.20221116T162329Z-220900)</cite>, <time>2025-11-06T10:59:11.000Z</time>, <time>2025-12-31T09:56:30.240Z</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://developer.adobe.com/experience-manager/reference-materials/cloud-service/javadoc/org/apache/commons/compress/archivers/zip/X5455_ExtendedTimestamp.html">https://developer.adobe.com/experience-manager/reference-materials/cloud-service/javadoc/org/apache/commons/compress/archivers/zip/X5455_ExtendedTimestamp.html</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="95" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[95]</anchor-end> 
<cite xml:lang="en">7-Zip / Bugs / #1432 7ZFM can't recognize UNIX timestamps in .ZIP archive</cite>, <time>2025-12-31T10:01:42.000Z</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://sourceforge.net/p/sevenzip/bugs/1432/">https://sourceforge.net/p/sevenzip/bugs/1432/</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="100" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[100]</anchor-end> 
<cite xml:lang="en">add support for Info-ZIP timestamp extra field by thejoshwolfe · Pull Request #86 · thejoshwolfe/yazl · GitHub</cite>, <time>2025-12-31T10:14:17.000Z</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://github.com/thejoshwolfe/yazl/pull/86/files">https://github.com/thejoshwolfe/yazl/pull/86/files</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="102" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[102]</anchor-end> 
<cite xml:lang="en">go/src/archive/zip/reader.go at 9ddb8ea73724d717a9bbf44be7d585ba5587504f · golang/go · GitHub</cite>, <time>2025-12-31T10:18:01.000Z</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://github.com/golang/go/blob/9ddb8ea73724d717a9bbf44be7d585ba5587504f/src/archive/zip/reader.go#L404-L440">https://github.com/golang/go/blob/9ddb8ea73724d717a9bbf44be7d585ba5587504f/src/archive/zip/reader.go#L404-L440</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="105" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[105]</anchor-end> 
<cite>File: ziptools/ziptools/ziptools/zipmodtimeutc.py</cite>, <time>2025-12-31T10:25:34.000Z</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://learning-python.com/cgi/showcode.py?name=ziptools/ziptools/ziptools/zipmodtimeutc.py">https://learning-python.com/cgi/showcode.py?name=ziptools/ziptools/ziptools/zipmodtimeutc.py</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="132" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[132]</anchor-end> 
<cite xml:lang="ja-JP">Will *.zip file stop working after 2038 ? : r/software</cite>, <time>2025-12-31T12:53:04.000Z</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://www.reddit.com/r/software/comments/jqnc9u/will_zip_file_stop_working_after_2038/">https://www.reddit.com/r/software/comments/jqnc9u/will_zip_file_stop_working_after_2038/</anchor-external></li></ul></refs><section><h1>実装戦略</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="122" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[122]</anchor-end> 実装は複数の日付のうちどれを使うかの選択を迫られます。
利用実態や精度を鑑みれば、</p><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="123" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[123]</anchor-end> <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x000A</n> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NTFS</anchor>)</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="124" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[124]</anchor-end> <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x5455</n></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="125" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[125]</anchor-end> <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x5855</n></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="126" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[126]</anchor-end> <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x000D</n> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unix</anchor>)</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="127" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[127]</anchor-end> last mod file date / time</li></ol><p>... の優先順が良いと思われます。それぞれ <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">central directory header</anchor> → <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">local header</anchor>
の順で、値が <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</n> や無指定なら無視して次を参照します。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="128" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[128]</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:">ZIPファイル</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:">値域</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">精度</anchor>の違いに注意する必要があります。</p><figure><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="129" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[129]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FATの日時形式</anchor> : <time>1980-01-01T00:00:00</time> - <time>2107-12:31T23:59:58</time> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">地方時</anchor> 2s 単位</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="133" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[133]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">32ビット符号付き整数</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">秒</anchor>単位 : <time>1901-12-13T20:45:52Z</time> - <time>2038-01-19T03:14:07Z</time> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">西暦2038年問題</anchor>)</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="134" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[134]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">32ビット符号無し整数</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">秒</anchor>単位 : <time>1970-01-01T00:00:00Z</time> - <time>2106-02-07T06:28:15Z</time></li></ul></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="173" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[173]</anchor-end> 
<time>西暦1901年途中<attrvalue xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">1901</attrvalue></time>から<time>西暦1979年<attrvalue xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">1979</attrvalue></time>までは <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:">FATの日時形式</anchor>では記述できません。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ZIP</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 time</anchor> <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</n> (<time>1970-01-01T00:00:00Z</time>) がこの範囲に含まれることに注意が必要です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="174" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[174]</anchor-end> 
<time>西暦2038年<attrvalue xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">2038</attrvalue></time>途中から<time>西暦2106年<attrvalue xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">2106</attrvalue></time>途中までは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">32ビット符号付き整数</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:">32ビット符号無し整数</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:">32ビット符号無し整数</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unix time</anchor> でなければ<time>西暦1969年<attrvalue xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">1969</attrvalue></time>までが記述できません。<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ビット列</anchor>だけを見てもこのどちらであるかを判定できません。ところで <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FATの日時形式</anchor>では都合がいいことに<time>西暦2107年<attrvalue xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">2107</attrvalue></time>まで記述できますので、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">32ビット符号無し整数</anchor>で<time>西暦2038年<attrvalue xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">2038</attrvalue></time><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">以上</anchor>であることは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FATの日時形式</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">年</anchor>から判断できます。都合が悪いことに<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FATの日時形式</anchor>では<time>西暦1979年<attrvalue xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">1979</attrvalue></time><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">以下</anchor>が記述できないため、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">32ビット符号付き整数</anchor>であることを確信はできませんが、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">32ビット符号無し整数</anchor>と確定できないなら<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">32ビット符号付き整数</anchor>と判断するのが良いと思われます。</p><figure><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="175" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[175]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">64ビット符号付き整数</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">秒</anchor>単位 : <time>−292277022657-01-27T08:29:52Z</time> - <time>292277026596-12-04T15:30:07Z</time></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="176" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[176]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">64ビット符号無し整数</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">秒</anchor>単位 : <time>1970-01-01T00:00:00Z</time> - <time>584554051223-11-09T07:00:15Z</time></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="177" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[177]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">64ビット符号付き整数</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ミリ秒</anchor>単位 : <time>-292275055-05-16T16:47:04.192Z</time> - <time>292278994-08-17T07:12:55.807Z</time></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="178" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[178]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">64ビット符号付き整数</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ナノ秒</anchor>単位 : <time>1677-09-21T00:12:43.145224192Z</time> - <time>2262-04-11T23:47:16.854775807Z</time></li></ul></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="179" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[179]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">POSIX</anchor> 系の多くの新しい<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プラットフォーム</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">64ビット符号付き整数</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 time</anchor> を扱えます。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FATの日時形式</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">32ビット整数</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:">ZIPファイル</anchor>からの読み込みには適切といえます。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ZIPファイル</anchor>への書き込みでは、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">32ビット符号付き整数</anchor>の範囲外の値を適切に処理する必要があります。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Java</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ミリ秒</anchor>単位や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Go</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 time</anchor> でも同じことが言えます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="180" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[180]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">64ビット符号無し整数</anchor>は、<time>西暦1969年<attrvalue xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">1969</attrvalue></time>以前を扱えないので、適切とはいえません。</p><figure><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="181" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[181]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">64ビット符号付き整数</anchor> : <time>-27627-04-19T21:11:54.522419200Z</time> - <time>-30828-09-14T02:48:05.477580700Z</time> 100ns 単位</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="182" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[182]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">64ビット符号無し整数</anchor> : <time>1601-01-01T00:00:00.000000000Z</time> - <time>60056-05-28T05:36:10.955161500Z</time> 100ns 単位</li></ul></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="183" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[183]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NTFSの日時形式</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>説があります。
実装上も実用上も安定して使えるのは両者の重なりの更に一部だけとされます。 <sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>NTFSの日時形式</anchor> </sw-see>
従って、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ZIPファイル</anchor>に含まれる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NTFSの日時形式</anchor>がいずれであるかを問題とする必要はありません。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ZIP</anchor> の処理では、その仕様に従い<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号無し整数</anchor>とするのが良いと考えられます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="184" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[184]</anchor-end> 
どちらと解釈するにせよ、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">64ビット符号付き整数</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 time</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:">下位桁溢れ</anchor>を妥協するか、2種類の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">データ型</anchor>を併用するかの選択を求められます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="185" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[185]</anchor-end> 
逆に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Windows</anchor> 系の実装は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NTFSの日時形式</anchor>を正とし、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unix time</anchor> の範囲の両端を扱えないことを妥協するという選択肢もあり、その方法でも実用上は問題ないと考えられます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="186" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[186]</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:">Unix time</anchor> は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NTFSの日時形式</anchor>の精度を完全に記述できるものの、その範囲の両端を扱えないことを妥協する必要があり、それでも実用上は問題ないと考えられます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="187" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[187]</anchor-end> 
いずれにせよ、範囲外となる値は適切に処理する必要があります。</p><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="130" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[130]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Perlモジュール</anchor> <code>Archive::Zip</code> は last mod file date / time
が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unix time</anchor> で <time>31.686060<attrvalue xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">unix:31.686060</attrvalue></time>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">未満</anchor>の値に設定されたとき、 <time>31.686060<attrvalue xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">unix:31.686060</attrvalue></time>
に変更します。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">時差</anchor>の問題を避けるために<time>西暦1980年<attrvalue xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">1980</attrvalue></time><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">始<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">年始</title></anchor>から12時間1分ずらされています。</p><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="217" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[217]</anchor-end> 
なお、範囲できない大きな値の検査はしておらず。成り行きとなります。</p><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="218" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[218]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FATの日時形式</anchor>で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2秒</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>られます。</p></example><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="131" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[131]</anchor-end> 
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="78" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;78</anchor-internal> の実装は範囲外の値となるとき、直近の値 (つまり境界の値) を入れます。</p></example><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="188" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[188]</anchor-end> 
なお、これらの問題は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ZIP</anchor> 固有でなく、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FAT</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NTFS</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SMB</anchor> などでも発生します。しかし、
どの種類の値が組合せて供給されるかなど、条件が少しずつ違います。</p><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><figure xmlns="http://www.w3.org/1999/xhtml" class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="78" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[78]</anchor-end> 
<cite xml:lang="en">GitHub - thejoshwolfe/yazl: yet another zip library for node</cite>, <time>2025-12-31T09:25:14.000Z</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://github.com/thejoshwolfe/yazl">https://github.com/thejoshwolfe/yazl</anchor-external></figcaption><blockquote><p>When attempting to encode an <code>mtime</code> outside the supported range for either format, such as the year 1970 in the DOS format or the year 2039 for the modern format, the time will clamped to the closest supported time.</p></blockquote></figure></refs><ed xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">
<anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="170" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[170]</anchor-end> 
<cite xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">python - Getting Error as &quot;ValueError: Zip does not support timestamps before 1980&quot; while installing Setuptools-scm Pypi - Stack Overflow</cite>, <time xmlns="http://www.w3.org/1999/xhtml">2026-01-01T07:37:15.000Z</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://stackoverflow.com/questions/62915376/getting-error-as-valueerror-zip-does-not-support-timestamps-before-1980-while">https://stackoverflow.com/questions/62915376/getting-error-as-valueerror-zip-does-not-support-timestamps-before-1980-while</anchor-external></ed><section><h1>地方時の時差の推定</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="139" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[139]</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>によるものと解釈します。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ZIPファイル</anchor>の送受信者は同じ地域に所在することが多いと推測されますから、これでうまくいく場合が多いと思われます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="140" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[140]</anchor-end> 
ところが、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webサイト</anchor>からのダウンロードで遠隔地の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ZIPファイル</anchor>を入手することがあると、この前提は成り立たなくなります。あちこちから収集した <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ZIPファイル</anchor>に機械的な処理をしたいときにも困ります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="137" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[137]</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>の情報があれば、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字コード</anchor>と強く結びついた<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">時間帯</anchor>と推定できる場合があります。
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>ロケール等による文字コード判定の補助</anchor> </sw-see></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="138" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[138]</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:">UTF-8</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>と推定できる場合があります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="142" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[142]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ZIPファイル</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">インターネット</anchor>から取得したものなら、入手に使った <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ccTLD</anchor> を利用できることがあります。政府機関等の公開データは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ccTLD</anchor> を使った <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webサイト</anchor>で配布されていることが多いので、多くの国で有効と期待できます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="141" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[141]</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>は<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:">ZIPファイル</anchor>に入っている確率は高くなさそうですし、推測の精度もそれほど良くならないことが多そうです。</p><hr></hr><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="143" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[143]</anchor-end> 推奨される判定方法 :</p><figure class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="145" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[145]</anchor-end> 強制的な指定値がある場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="223" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[223]</anchor-end> その値を返し、ここで停止します。</li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="224" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[224]</anchor-end> 各ファイルに対し、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="144" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[144]</anchor-end> <var>拡張の mtime</var> がある場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="221" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[221]</anchor-end> <var>t</var> を、
<var>last mod file date / time</var> -  <var>拡張の mtime</var> 
に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="222" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[222]</anchor-end> 
<var>t</var>を、
sign (<var>t</var>) (<n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">15</n> × <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">60</n>)  ⌊ <mfrac xmlns="http://www.w3.org/1998/Math/MathML"><mtext> |<var xmlns="http://www.w3.org/1999/xhtml">t</var>| + <mfrac><mtext> <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">15</n> × <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">60</n> </mtext><mtext>2</mtext></mfrac> </mtext><mtext> <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">15</n> × <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">60</n> </mtext></mfrac> ⌋
に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="146" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[146]</anchor-end> |<var>t</var>| ≦ 24 × 60 × 60 の場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="147" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[147]</anchor-end> <var>t</var>を返し、ここで停止します。</li></ol></li></ol></li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="148" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[148]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイル名の文字コード</anchor>から推定時差を1つに定められる場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="149" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[149]</anchor-end> その値を返します。</li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="150" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[150]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイル名の文字コード</anchor>から推定時差を2つ (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">標準時</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">夏時刻</anchor>) に定められる場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="151" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[151]</anchor-end> <var>地域</var>を、その推定時差の地域に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="152" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[152]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ccTLD</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">国</anchor>が <code>null</code> でなく、<var>地域</var>に属する場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="153" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[153]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ccTLD</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>を返します。</li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="154" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[154]</anchor-end> それ以外の場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="155" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[155]</anchor-end> <var>地域</var>の代表の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">時間帯</anchor>を返します。</li></ol></li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="156" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[156]</anchor-end> それ以外の場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="157" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[157]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ccTLD</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">国</anchor>が <code>null</code> でない場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="158" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[158]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ccTLD</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>を返します。</li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="159" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[159]</anchor-end> それ以外の場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="160" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[160]</anchor-end> 決定不能を返します。</li></ol></li></ol></li></ol></figure></section></section><section><h1>利用例</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="46" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[46]</anchor-end> 実利用例:</p><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="49" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[49]</anchor-end> 
<time>2025-12-31T02:15:50.500Z</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://statistique.quebec.ca/en/fichier/rda-startup-kit.zip">https://statistique.quebec.ca/en/fichier/rda-startup-kit.zip</anchor-external><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="52" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[52]</anchor-end> <time>2025-12-31T02:20:17.100Z</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://web.archive.org/web/20251231021855/https://statistique.quebec.ca/en/fichier/rda-startup-kit.zip">https://web.archive.org/web/20251231021855/https://statistique.quebec.ca/en/fichier/rda-startup-kit.zip</anchor-external><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="53" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[53]</anchor-end> 古いものは同じ <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> でも別ファイル (日付構造も違う) なので注意。</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="50" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[50]</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:">local header</anchor>
の
<n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x5455</n>
に mtime, atime, ctime (flag もこれに一致)
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">central directory</anchor>
に mtime (flag もこれに一致)</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="51" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[51]</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:">central directory</anchor>
に mtime (flag もこれに一致)</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="110" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[110]</anchor-end> 
<time>2025-12-31T12:13:12.800Z</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://www.city.yokohama.lg.jp/kosodate-kyoiku/kyoiku/gakku-meibo/tsugakukuiki/bunnpuzu-gis.files/0019_20250910.zip">https://www.city.yokohama.lg.jp/kosodate-kyoiku/kyoiku/gakku-meibo/tsugakukuiki/bunnpuzu-gis.files/0019_20250910.zip</anchor-external><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="111" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[111]</anchor-end> 一般ファイルは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">central directory</anchor> <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x5455</n> に mtime,
last mod file date / time と時差を除き同じ値</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="112" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[112]</anchor-end> 
<time>2025-12-31T12:19:50.000Z</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://www.city.yokohama.lg.jp/business/bunyabetsu/kankyo-koen-gesui/kiseishido/kagaku/risukuhyoka.files/0043_20251201.zip">https://www.city.yokohama.lg.jp/business/bunyabetsu/kankyo-koen-gesui/kiseishido/kagaku/risukuhyoka.files/0043_20251201.zip</anchor-external><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="113" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[113]</anchor-end> 一般ファイルは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">central directory</anchor> <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x5455</n> に mtime,
last mod file date / time と時差を除き同じ値</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="54" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[54]</anchor-end> 
<time>2025-12-31T03:01:46.400Z</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://www.sio.gov.sa/assets/files/guide_files/Arabic.zip">https://www.sio.gov.sa/assets/files/guide_files/Arabic.zip</anchor-external><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="55" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[55]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ディレクトリー</anchor>は <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x5855</n> に
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">central directory</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">local header</anchor> の modtime, actime の計4つ同じ値。<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="56" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[56]</anchor-end> おそらく<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">時差</anchor>を除いて last mod file date / time とも同じ値。</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="57" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[57]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイル</anchor>は <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x5855</n> に
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">central directory</anchor> のみ modtime, actime の2つが別の値。<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="58" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[58]</anchor-end> last mod file date / time と modtime が同じ値。</li></ul></li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="97" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[97]</anchor-end> 
<time>2025-12-31T10:05:01.00Z</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://web.archive.org/web/20110706022639/http://www.youngcreativechevrolet.eu/app/webroot/uploads/fonts_ycc.zip">https://web.archive.org/web/20110706022639/http://www.youngcreativechevrolet.eu/app/webroot/uploads/fonts_ycc.zip</anchor-external><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="98" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[98]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ディレクトリー</anchor>は <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x5855</n> に
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">central directory</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">local header</anchor> の modtime, actime の計4つの値。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="99" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[99]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイル</anchor>は <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x5855</n> に
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">central directory</anchor> のみ modtime, actime の2つの値。</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="106" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[106]</anchor-end> 
<time>2025-12-31T12:06:24.300Z</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://catalog-data.city.kanazawa.ishikawa.jp/dataset/89d93f28-38b4-4971-9988-2ff2d3227f56/resource/50049b19-fe9f-4c1f-a9ea-9d0a24141644/download/172103_bus.zip">https://catalog-data.city.kanazawa.ishikawa.jp/dataset/89d93f28-38b4-4971-9988-2ff2d3227f56/resource/50049b19-fe9f-4c1f-a9ea-9d0a24141644/download/172103_bus.zip</anchor-external><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="107" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[107]</anchor-end> 一般ファイルの <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">central directory</anchor> に
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NTFS</anchor> の mtime, ctime, atime<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="108" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[108]</anchor-end> ctime, atime は <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</n></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="109" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[109]</anchor-end> mtime と last mod file date / time が時差を除き同じ値</li></ul></li></ul></li><li><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> <time>2025-12-30T16:09:29.800Z</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://opendata.attica.gov.gr/content/genikh-dieythynsh-eswterikhs-leitoyrgias/d-nsh-dioikhtikwn-yphresiwn/155-diakhrykseis?fdl=WGNVMDZpUXBkL0VvczA4L0RHM1NMVWxCMkRQSUdMdWlDbjNFY1VGZTZSQXk2aEJoWGhoSkRGZWtSa0diR2c0MVltZ3ZNa3R1VTA1MlZUWnNSM0p6V21wWk5ERk5VVDA5">https://opendata.attica.gov.gr/content/genikh-dieythynsh-eswterikhs-leitoyrgias/d-nsh-dioikhtikwn-yphresiwn/155-diakhrykseis?fdl=WGNVMDZpUXBkL0VvczA4L0RHM1NMVWxCMkRQSUdMdWlDbjNFY1VGZTZSQXk2aEJoWGhoSkRGZWtSa0diR2c0MVltZ3ZNa3R1VTA1MlZUWnNSM0p6V21wWk5ERk5VVDA5</anchor-external><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="48" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[48]</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>とも <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">central directory</anchor> に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NTFS</anchor> 時刻</li></ul></li></ul></refs><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[25]</anchor-end> 人工的な利用例:</p><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="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[24]</anchor-end> <time>2025-12-30T15:12:40.200Z</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://bugs.python.org/file48724/t.zip">https://bugs.python.org/file48724/t.zip</anchor-external><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[26]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ディレクトリー</anchor>は <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x5455</n> に<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[27]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">central directory</anchor> では
flag では mtime と atime が入っていることになっているが値は mtime だけ
(仕様通り)</li><li><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">local header</anchor> では
mtime と atime の両方が値もある</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="29" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[29]</anchor-end> 一般<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイル</anchor>は <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x5455</n> に<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[30]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">central directory</anchor> では
flag では mtime と atime が入っていることになっているが値は mtime だけ</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[31]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">local header</anchor> には <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x5455</n> が無し</li></ul></li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="32" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[32]</anchor-end> <time>2025-12-30T15:26:42.000Z</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://github.com/icsharpcode/SharpZipLib/files/2522058/UTF8_Filenames.zip">https://github.com/icsharpcode/SharpZipLib/files/2522058/UTF8_Filenames.zip</anchor-external><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="33" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[33]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;24</anchor-internal> と同じ構造</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="161" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[161]</anchor-end> 
<time>2026-01-01T00:49:37.100Z</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://github.com/rubyzip/rubyzip/raw/refs/heads/main/test/data/osx-archive.zip">https://github.com/rubyzip/rubyzip/raw/refs/heads/main/test/data/osx-archive.zip</anchor-external><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="162" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[162]</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:">central directory</anchor>
の
<n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x5455</n>
に
atime, ctime, mtime</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="39" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[39]</anchor-end> <time>2025-12-30T15:51:44.800Z</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://github.com/user-attachments/files/16069900/default.zip">https://github.com/user-attachments/files/16069900/default.zip</anchor-external><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="40" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[40]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">central directory</anchor> に NTFS タイムスタンプがあります。
3つの時刻のどれも last mod file date / time と微妙にずれています。丸めの差?</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[41]</anchor-end> <time>2025-12-30T16:02:49.400Z</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://github.com/thejoshwolfe/yauzl/files/1973376/default.zip">https://github.com/thejoshwolfe/yauzl/files/1973376/default.zip</anchor-external><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="42" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[42]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ディレクトリー</anchor>は <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x5855</n> に
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">central directory</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">local header</anchor> の modtime, actime の計4つ同じ値。<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="43" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[43]</anchor-end> おそらく<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">時差</anchor>を除いて last mod file date / time とも同じ値。</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="44" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[44]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイル</anchor>は <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x5855</n> に
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">central directory</anchor> のみ modtime, actime の2つが別の値。<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="45" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[45]</anchor-end> last mod file date / time とは一致しないが、おそらく modtime
と少し前後した時刻で丸めの差か。</li></ul></li></ul></li></ul></refs></section></section><section><h1>メモ</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="34" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[34]</anchor-end> 
<cite xml:lang="ja">アーカイブファイルフォーマットのタイムスタンプまとめ</cite>, <time>2025-12-30T15:42:11.000Z</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://zenn.dev/sorairolake/articles/timestamp-of-archive-formats">https://zenn.dev/sorairolake/articles/timestamp-of-archive-formats</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="59" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[59]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Git</anchor> は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">commit</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>でも同様です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="163" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[163]</anchor-end> 
<cite xml:lang="en-US">Filesystem Timestamps: What Makes Them Tick?</cite>, <time>2026-01-01T07:18:02.000Z</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://www.sans.org/white-papers/36842">https://www.sans.org/white-papers/36842</anchor-external></p></section></section><section><h1>関連</h1><p><sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>システムの時間帯</anchor>, <anchor>地方時</anchor> </sw-see></p></section><section><h1>メモ</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="172" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[172]</anchor-end> 
<cite xml:lang="en">FatFs - Configuration Options</cite>, <time>2025-11-30T15:07:35.000Z</time>, <time>2026-01-01T08:02:08.432Z</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://elm-chan.org/fsw/ff/doc/config.html#fs_nortc">https://elm-chan.org/fsw/ff/doc/config.html#fs_nortc</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="220" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[220]</anchor-end> 
<cite xml:lang="ja">ファイルのタイムスタンプが変更されるタイミング</cite>, <time>2026-01-02T12:43:35.000Z</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://zenn.dev/megeton/articles/e58ea554ba5650">https://zenn.dev/megeton/articles/e58ea554ba5650</anchor-external></p></section></body></html>