[6] ISO 8601 は、日付と時刻の表現形式に関する ISO の国際標準です。 日時の情報交換に使えるいくつかの構文 (日時形式) を定義しています。
[182] 例えばグレゴリオ暦の西暦を 2016-03-25
と表現できる、といったことが規定されています。
[168] ISO 8601 は、日時に関する様々な対象を記述したり、様々な応用分野で利用したりできるように、 多くの選択肢のある“緩い”仕様を提示しています。実際には、利用する場面ごとにより具体的な仕様を (情報交換の当事者間の合意により) 確定する必要があり、それをプロファイルと呼ぶことがあります。 ISO 8601のプロファイルは、色々な場面で使われています。
[175] 自然言語文では、歴史と文化により様々な日時表現が用いられています。 しかし日米欧で年月日の順序が異なるなど、その表記の揺れは大きく、 相互運用可能な情報交換のためには何らかの基準が必要です。 ISO 8601 はそのような基準として色々な場面で採用されています。
[176] しかし、いつでもどこでもむやみに ISO 8601 の日時形式を採用するべきとも言えません。
例えば ISO 8601 の規定に従えば日付と時刻の間には「T」と記載することになります
(は
2016-03-25T12:18
と表記します。) が、
人間が対象読者なら、この表記は一般的ではありませんから、奇妙に思われるでしょう。
時刻を「time」と呼ぶ英語圏ですら、この表記は (人間対象には) 普及していません。
[248] 一部で誤解があるような、すべての日時表示を統一しようと志向するものではありませんし、 そのような施策も知られていません。
[37] ISO 8601 は >>38 から入手できますが、有料です。
[325] 開発は ISO/TC 154/WG 5 が担当しています。
[45] ISO 8601 では地の文と日時表現や日時書式表現を区別するために、 表現を「[」と「]」で括っています。この括弧は仕様書の表現上のもので、 表現の一部ではないとされています。 >>7 Introduction
[219]
ISO 8601 は先発グレゴリオ暦を採用しています。
[250] ISO 8601 本体は西暦年にだけ対応しています。 他の紀年法は利用できません。
[126] ISO 8601 は日時などを記述した文字列のことを表現と呼んでいます。 ISO 8601 では次のような表現が定義されています。
[26] 日時表現は、 時間点や時間間隔、反復時間間隔を示す表現です >>7 2.3.1。
[36] 日時表現は精度や値域によって次のように分類されています。
[127] 完全表現は、週による表記と月日による表記のように、複数存在することがあります。 それ以外の表現も、月までの精度の表現と年までの精度の表現のように、複数存在することがあります。 月までの精度で年を展開した表現のように、複数に該当する表現もあり得ます。
[130] 複数の表現を組み合わせて構成される表現では、違った精度の表現を混在させることができます。 例えば日時を表す際に、日付の完全表現と時刻の精度を削減した表現を組み合わせることができます (もちろんそれは日時の完全表現ではありません)。
[69] また記号の有無によって次の分類があります。
[128] 基本書式と拡張書式がある場合、拡張書式から特定の分離子を除去したものが基本書式になっています。 除去できる分離子がない場合には、拡張書式はありません。
[131] 複数の表現を組み合わせて構成される表現では、基本書式と拡張書式を混在させることは禁止されています。
[129] 表現や書式の種類は沢山ありますが、基本的にはどれが良いとかどれが優れているといったような区別ではなく、 必要に応じて使い分けることが想定されているようです。
[160] ISO 8601//ABNF に、日時表現を ABNF で表したものがあります。
[28] 日時書式表現は、 日時表現の群の書式を説明する表現です >>7 2.3.2。
[46] これは一種のパターン言語で、 ISO 8601 仕様書で日時表現の構文を定義する >>7 3.3 ためのものですが、情報交換において日時表現がどのように記述されているかを示すために用いることもできます。
[47] 情報交換の当事者間の合意により、日時書式表現を転送しても構いません >>7 3.3, >>7 5。 その場合 ISO 8601 により認められた日時書式表現のみを用いなければなりません >>7 3.3。 また、情報交換の当事者間の合意により認められた日時表現に対応する日時書式表現のみ用いなければなりません >>7 5。
[51] ITU-T S.1 レパートリ (telex など) を用いる環境では、 日時書式表現を用いてはなりません。 >>7 3.4.1
[54] 日時書式表現では、次の文字を使います >>7 3.4.2。
文字 | 意味 |
---|---|
Y | 年の数字 |
M | 月の数字 |
D | 日の数字 |
w | 週の数字 |
h | 時の数字 |
m | 分の数字 |
s | 秒の数字 |
n | 正数または0の数字 |
[55] ±
は、正数または0の +
または負数のマイナスを表します
>>7 3.4.2。ただし ±
を使えない環境では、日時書式表現に
±
を含められません >>7 3.4.1。
[48] 下線は、日時表現においてそれに相当する部分が複数文字に展開され得ることを表します >>7 3.3。 >>54 の数字を表す文字に下線があると、それが0文字以上であることを表します >>7 3.4.2。 日時書式表現の情報交換の時点で文字数がわかっている時には、下線を用いてはなりません >>7 3.3, >>7 5。 文字に下線を付けられない環境では、文字の前に下線を置かなければなりません >>7 3.4.1。
[56] その他の文字は、日時表現でも同じ文字を表します >>7 3.4.2。
[133] JIS X 0301 による拡張では、 N
が元号の記号を表します >>27 5.1.3
[70] 暦日付に関しては、次の表現が定義されています >>7 4.1.2。
基本形式 | 拡張形式 | |
完全表現 - 日 | YYYYMMDD | YYYY‐MM‐DD |
精度を削減した表現 - 月 | YYYY‐MM | なし |
精度を削減した表現 - 年 | YYYY | なし |
精度を削減した表現 - 世紀 | YY | なし |
展開表現 - 日 | ±_YYYYYMMDD | ±_YYYYY‐MM‐DD |
展開表現 - 精度を削減した表現 - 月 | ±_YYYYY‐MM | なし |
展開表現 - 精度を削減した表現 - 年 | ±_YYYYY | なし |
展開表現 - 精度を削減した表現 - 世紀 | ±_YYY | なし |
[72] 通日日付に関しては、次の表現が定義されています >>7 4.1.3。
基本形式 | 拡張形式 | |
完全表現 - 日 | YYYYDDD | YYYY‐DDD |
展開表現 - 日 | ±_YYYYYDDD | ±_YYYYY‐DDD |
[73] 週日付に関しては、次の表現が定義されています >>7 4.1.4。
基本形式 | 拡張形式 | |
完全表現 - 日 | YYYYWwwD | YYYY‐Www‐D |
精度を削減した表現 - 週 | YYYYWww | YYYY‐Www |
展開表現 - 日 | ±_YYYYYWwwD | ±_YYYYY‐Www‐D |
展開表現 - 精度を削減した表現 - 週 | ±_YYYYWww | ±_YYYY‐Www |
[142] 以前は更に次の表現が定義されており、情報交換の当事者間の合意により用いることができました ISO 8601:2000 5.2.1.3, 5.2.2.2, 5.2.3.3。
基本形式 | 拡張形式 | |
---|---|---|
切り詰めた表現 - 世紀省略 | YYMMDD | YY‐MM‐DD |
切り詰めた表現 - 精度を削減した表現 - 世紀省略 | ‐YYMM | ‐YY‐MM |
切り詰めた表現 - 精度を削減した表現 - 世紀省略 | ‐YY | なし |
切り詰めた表現 - 年省略 | --MMDD | ‐‐MM‐DD |
切り詰めた表現 - 精度を削減した表現 - 年省略 | ‐‐MM | なし |
切り詰めた表現 - 精度を削減した表現 - 年月省略 | ‐‐‐DD | なし |
切り詰めた表現 - 世紀省略 | YYDDD | YY‐DDD |
切り詰めた表現 - 精度を削減した表現 - 年省略 | ‐DDD (‐ 1つ!) | なし |
切り詰めた表現 - 世紀省略 | YYWwwD | YY‐Www‐D |
切り詰めた表現 - 精度を削減した表現 - 世紀省略 | YYWww | YY‐Www |
切り詰めた表現 - 十年紀省略 | -YWwwD | ‐Y‐Www‐D |
切り詰めた表現 - 精度を削減した表現 - 十年紀省略 | ‐YWww | ‐Y‐Www |
切り詰めた表現 - 年省略 | ‐WwwD | ‐Www‐D |
切り詰めた表現 - 精度を削減した表現 - 年省略 | ‐Www | なし |
切り詰めた表現 - 週省略 | ‐W‐D | なし |
[143] これらの先頭の省略を表す ‐
は、
曖昧でない場合省略できる
ISO 8601:2000 4.6, 5.2.1.3, 5.2.2.2, 5.2.3.3
とされていました。
[344] 暦日付の完全表現は ISO 8601 の前身の1つ ISO 2014 に由来します。 年は4桁でなければならないのが原則で、 明確な時は2桁にすることができると NOTE にありました。 >>339
[374] 通日日付の完全表現は ISO 8601 の前身の1つ ISO 2711 に由来します。
year (年) と day of year (年の日) はそれぞれ別個に使ってもよく、 この順で組合せて使っても良いとされていました。 >>371
年は4桁ですが、2桁の year of century (世紀の年) や 1桁の year of decade (十年紀の年) とする選択肢も認められていました。 >>371
[135] JIS X 0301 は元号による日付の表現も定義しています >>27 5.2.4
基本形式 | 拡張形式 | |
完全表現 - 日 | YY.MM.DD | NYY.MM.DD |
[319] ISO8601(X0301)の桁数拡張: suchowan's blog, https://suchowan.at.webry.info/201309/article_6.html
[320] ISO8601(X0301)用オプション: suchowan's blog, https://suchowan.at.webry.info/201312/article_11.html
[75] 地方時に関しては、次の表現が定義されています >>7 4.2.2。
基本形式 | 拡張形式 | |
完全表現 - 秒 | hhmmss | hh:mm:ss |
精度を削減した表現 - 分 | hhmm | hh:mm |
精度を削減した表現 - 時 | hh | なし |
小数付き表現 - 秒 | hhmmss,s_s | hh:mm:ss,s_s |
小数付き表現 - 精度を削減した表現 - 分 | hhmm,m_m | hh:mm,m_m |
小数付き表現 - 精度を削減した表現 - 時 | hh,h_h | なし |
[144] 以前は更に次の表現が定義されており、情報交換の当事者間の合意により用いることができました ISO 8601:2000 5.3.1.4。
基本形式 | 拡張形式 | |
切り詰めた表現 - 時省略 | ‐mmss | ‐mm:ss |
切り詰めた表現 - 精度を削減した表現 - 時省略 | ‐mm | なし |
切り詰めた表現 - 精度を削減した表現 - 分省略 | ‐‐ss | なし |
切り詰めた表現 - 小数付き表現 - 時省略 | ‐mmss,s_s | ‐mm:ss,s_s |
切り詰めた表現 - 小数付き表現 - 精度を削減した表現 - 時省略 | ‐mm,m_m | なし |
切り詰めた表現 - 小数付き表現 - 精度を削減した表現 - 分省略 | ‐‐ss,s_s | なし |
[145] なおこれらの先頭の省略を表す -
は、曖昧でない場合省略できるとされていました
ISO 8601:2000 4.6, 5.3.1.4。
[381]
ISO 8601 の前身の1つ ISO 3307 は、
時を 00
から 23
としていました
(24
は不可)。
分と秒を 00
から 59
としていました
(閏秒の 60
, 61
は不可)。
>>376
[81] 日のUTCに関しては、 >>75 の各表現の後に
UTC指示子 Z
を付けたものが定義されています >>7 4.2.4。
[87] 地方時と、地方時とUTCの時差を示す必要がある時は、 地方時の直後に時差の表現を続けることができます >>7 4.2.5.2。
[90] 地方時においては空文字列、日のUTCにおいては UTC指示子 Z
、
時差付きの場合においては時差のことを時間帯指示子といいます
>>7 4.3.2。
[76] 地方時の表現 (>>75) の前に時刻指示子 T
を付けた時刻指示子付き表現を用いることができます。
文脈上地方時の表現であるか不明瞭な場合には、これを用いなければなりません。 >>7 4.2.2.5
[83] 地方時と日のUTCの時差に関しては、次の表現が定義されています >>7 4.2.5.1。
基本形式 | 拡張形式 | |
分 | ±hhmm | ±hh:mm |
時 | ±hh | なし |
[85] 地方時の表現とは違って、分を省略できるのは、分が 0 になるときだけです >>7 4.2.5.1。 精度を削減した表現や小数付き表現はありません。
[84] 時差は地方時の表現と併用するもので、単独での利用は禁止されています >>7 4.2.5.1。
-00:00
に特別な意味を与えていますが、
ISO 8601 にはそのような規定はなく、ローカルルールです。
(そうしたローカルルールが ISO 8601 により認められるかどうか、
議論の余地があります。)[394]
ISO 8601 の前身の1つ ISO 4031 は、
TDF
(time differential factor)
として
±hhmm
/ ±hh:mm
相当のものを規定していました。
>>390
[395]
:
が認められるのか規定本文では若干心もとないのですが、
例示で有無両パターンが明記されています。
>>390
[396] UTC との時差 -1200 から +1300 までがある、 と説明されていました。 >>390 規定なのか制定当時の事実の提示に過ぎないのか不明瞭ですが、 そう書かれているとこの範囲のみ対応すれば十分と思ってしまいそうです。
[397] 本規格は ISO 2014, ISO 2711, ISO 3307 と併用すると書かれていました。 >>390 具体的に例示されているのは ISO 3307 の時刻の構文との併用だけで、 暦日付や通日日付との併用の可否や方法はよくわかりません。
[88] 日時に関しては、次のいずれかの日付の表現 (完全表現または展開表現)
の後に時刻指示子 T
の後に >>75、>>81、>>87 のいずれかの時刻の表現が来るものが定義されています
>>7 4.3。
基本形式 | 拡張形式 |
YYYYMMDD | YYYY‐MM‐DD |
±_YYYYYMMDD | ±_YYYYY‐MM‐DD |
YYYYDDD | YYYY‐DDD |
±_YYYYYDDD | ±_YYYYY‐DDD |
YYYYWwwD | YYYY‐Www‐D |
±_YYYYYWwwD | ±_YYYYY‐Www‐D |
[91] 時刻指示子 T
は、情報交換の当事者間の合意があれば、
曖昧でない場合省略できます。 >>7 4.3.2 NOTE
[100] ISO 8601の時間長形式としては、次の表現が定義されています >>7 4.4.3。
[105] 値が0なら、その値と直後の指示子は省略できます。時と分と秒がすべて省略されるなら、
T
も省略しなければなりません。しかしすべて省略して P
のみとしてはなりません。 >>7 4.4.3.2
[104] 数字列が、その直後の指示子を単位とする時間長の値と解釈されます。 全体としては個々の時間長の和を表します。
[103] 数字列の最大桁数は、情報交換の当事者間の合意によります >>7 4.4.3.2。
[101] 時間長の表現は時間間隔や循環時間間隔の一部として使われるもので、 単独での利用を推進するものではない >>7 4.4.3.2 とされています。
[107] 情報交換の当事者間の合意により、代替形式を用いることもできます。
これは日時の表現の前に P
を付けたものです。 >>7 4.4.3.3
[108] ここに示したものの他に、基本書式、精度を削減した表現、小数付き表現、展開表現も認められているようです。
[109] ただしこれらは日付としてではなく、時間長として扱われるため、値域が違っています。 年、月、日は 0 から始まります。また 12月、30日、24時、60分、60秒は認められないようです。 >>7 4.4.3.3
[242] TM_PeriodDuration
は ISO 8601の時間長形式を使ったデータ型です。
構文を制限し、グレゴリオ暦と UTC 以外にも拡張しています。
[93] ISO 8601の時間間隔形式は、
... の4種類の方法で記述できます >>7 4.4.1。このうち >>94、>>96、>>97 は完結した情報ですが、 >>95 は時間のみで構成される不完全な time interval 情報で、 その意味を解釈するためには何らかの文脈情報が必要です。
[111] 日時の表現を、開始と終了で2つ並べて、/
で区切ったものです。
[112] すべて基本書式、またはすべて拡張書式で構成されなければなりません >>7 4.4.4.1, >>7 4.4.4.5, >>7 4.4.5。
[113] 両者の前後関係は明記されていませんが、開始と終了ですから、前者が後者以下でなければならないものと思われます。
[121] 終了側の上位側が省略されていれば、開始側と同じ値とみなされます >>7 4.4.5。
[122] 例えば 1985-04-12/06-25
は、1985年4月12日から1985年6月25日を表します >>7 B.1.4。
T
まで省略して時と分だけで秒がないものは、
区別できないケースが有ります。[120] 開始側にUTC指示子か時差が含まれていて、終了側に含まれていなければ、 開始側の時間帯が終了側にも適用されます >>7 4.4.5。
[123] 精度を削減する時に前後で精度が一致していなければならないという規定はありませんから、
1098-01-05/1993-03-05T00:12:44
のような表現も良いことになります。
[308] RKMSの時間範囲形式は、不明を表すために開始と終了の一方を省略可能とした拡張でした。
[309] Date Ranges (Dublin Core) は、 W3C-DTF に限定しつつ、開始と終了の一方を省略可能とした拡張でした。
[114] 時間長の表現によって、時間間隔の表現とするものです >>7 4.4.4.2, >>7 4.4.4.5, >>7 4.4.5。
[115] 開始の日時の表現と時間長の表現を並べて、 /
で区切ったものです。
[116] すべて基本書式、またはすべて拡張書式で構成されなければなりません >>7 4.4.4.3, >>7 4.4.4.5, >>7 4.4.5。
[117] 時間長と終了の日時の表現を並べて、 /
で区切ったものです。
[118] すべて基本書式、またはすべて拡張書式で構成されなければなりません >>7 4.4.4.4, >>7 4.4.4.5, >>7 4.4.5。
[125] 反復時間間隔は、 R
、反復数、/
、時間間隔の順に並べて表現します。
反復数を省略した場合は、無制限の反復を表します。 >>7 4.5
[57] 日時表現 (や日時書式表現) にはラテン文字がしばしば登場しますが、 これは指示子 >>7 3.4.3 と呼ばれています。
[58] 更に時間の表現では、
Y
, M
, W
, D
, H
, S
が指示子として使われます >>7 3.4.3。
[134] JIS X 0301 の拡張では、
M
、明
など (>>172)
を元号を表す記号として使っています >>27 5.1.3。
[65] 時刻要素で長さが決まっている場合には、必要なら先導0を用いなければなりません >>7 3.6。
[150] 日時書式表現における ±
(>>55)、 /
の代替のダブルハイフン (>>98)、
特殊な扱いであるハイフンとマイナス (>>49)、 JIS X 0301 による拡張である元号 (>>134)
という多くの例外を除き、 ISO 8601 の表現で用いられる文字は、 ISO/IEC 646 や
ASCII で表現できます。
[52] 日時表現では、大文字が使えない場合、小文字を使って構いません。 >>7 3.4.1 NOTE 1
[53] 空白は、明示的に認められた場合を除き、使ってはなりません。 >>7 3.4.1 ただし ISO 8601 で明示的に認めている箇所はありません。
[63] :
は、時、分、秒の区切りに使います >>7 3.4.4。
[140] ISO 8601:2000 では #
も定義されています ISO 8601:2000 4.5 が、例示にあるだけで、
実際には利用されていません。反復時間間隔において何度目の反復であるかを識別する際の区切子として使うことが想定されていたようです。
ISO 8601:2004 には含まれていません。
[61] マイナスは、日時書式表現の ±
に相当する日時表現の部分で使って、
負数を表します。
[62] ハイフンは、年、月、週、日の間の区切りとして使います >>7 3.4.4。
[49] ハイフンやマイナスは、 ISO/IEC 646 を元にした文字レパートリにあっては、
HYPHEN-MINUS
を用います。 >>7 3.4.1
[77] 小数点は時、分、秒の整数部と小数部を分けるために使います。 値が1に満たない時は整数部を 0 や 00 にしなければなりません。 小数点がある時は小数部は1桁以上必要です。 >>7 4.2.2.4, >>7 4.4.3.2
[78] 小数点は ,
または .
を用いることができます。
,
がより好ましいとされています。 >>7 4.2.2.4, >>7 4.4.3.2
[79] ISO 8601 の日時書式表現や例示の日時表現はすべて ,
に統一されています。
[80] しかし XML Schemaの日付形式やHTMLの日付形式など主要なプロファイルはすべて
.
を採用しています。
[139] JIS X 0301 によって拡張された元号による日付の表現では、
ピリオド >>27 5.1.3 を用いています。これは ,
ではなく、
.
でなければなりません。
[64] /
は、time interval や recurring time interval の区切りに使います
>>7 3.4.4, >>7 4.4.2 a)。
[98] 応用分野によっては、 /
のかわりに二重ハイフンを使うことがあります
>>7 4.4.2 NOTE。
T
W
[368]
ISO 8601 の前身の1つ ISO 2015 は、
週番号の前に、週番号であることを明示する記号を書けるとしていました。
その表現は言語によるとしながらも、
W 01
や W 1
のように
W
(week)
を使った例が示されていました。
>>346
[66] ISO 8601 は日時表現や日時書式表現について、多くのバリエーションを定義していますし、 情報交換の当事者間の合意によって様々なオプションを採用できるとしています。 そのため様々なISO 8601のプロファイルが存在しています。
[68] 情報交換の当事者間の合意によって何らかの表現を採用する場合、 他の表現が曖昧無く区別できるように注意する必要があります >>7 3.7。
[151] 不思議なことに全体としての適合性の規定がありませんが、明らかに、 仕様上認められ得るすべての表現を生成したり、理解したりすることは求められておらず、 応用分野と当事者間の合意によって必要な範囲の構文に対応するべきであると解するのが妥当でしょう。
[153] プログラミング言語、プロトコルその他各種の応用分野において、 ISO 8601 の一部機能を選択したり、それを元に拡張したりしたものが存在します。 その粒度は様々で、自由度が高いものもあれば、一意に表現が定まるようなものもあります。
[154] ISO 8601 を参照して定義されているものもあれば、完全に独自に互換な表現を定義しているものもあります。
[155] ISO 8601 はそのようなプロファイルの適合性を定義していませんから、 どれだけ制限や改変を加えても ISO 8601 に適合していると主張できるのかははっきりしません。
[156] 例えば RFC 3339の日付形式は T
や Z
を小文字でも良いとしていますが、
ISO 8601 では >>52 の通り小文字による代用こそ認められていますが、
混在させると ISO 8601 に適合しないかもしれません。
[157] xs:dateTime
では5桁以上の年を認めていますが、その前に +
を書くことができませんから、完全表現でも展開表現でもありません。
ISO 8601 に適合しない拡張ということになります。
[158] xs:gYear
は年と時差を組み合わせていますが、 ISO 8601
ではこのような組み合わせ方は定義されていません。
[212] 困ったことに、 ISO 8601 のうちの一部の機能のみを採用したものを 「ISO 8601 形式」のように呼ぶ人が少なくありません。 実際に ISO 8601 のどの一部を採用するかはものにより異なっていますし、 そのようないい加減な文書はまともに説明していないので、 文脈や例示、実装状況などから何を表しているか推測するしかありません。
[25] 主要なプロファイルの違いは次のようになっています。
[9] RFC 3339の日付形式は、特定の日時を表す部分集合で、 新しい IETF の技術ではこれを採用することが推奨されています。
[10] XML Schema の仕様書第2部ではいろいろな基本的なデータ型を規定していますが、 その中には RFC 3339 の日付形式に極めてよく似たものを含め、 いくつかの日付や時刻や時間の表現のための形式が定義されています。
[23] HTMLの日付形式のいくつかは、 ISO 8601 をもとに定義されています。
[24] JavaScriptの日付形式には、 ISO 8601の日付形式のプロファイルが含まれています。
[11] W3C Member Submission Note である Date and Time Formats は、 RFC 3339の日付形式を同じものや、それよりも精度が低いもの (時刻を省略したものなど) など数種類の形式 (通称 W3C-DTF) を提案しています。 HTML 4 などが採用していますが、 XML Schema データ型の登場により現在では時代遅れであると考えられています。
[4] RFC 2326の時刻形式の1つ、 npt-range
は、
ISO 8601 に従った書式で、演奏時間範囲を指定するのに使われます。
[5] PICSの日付形式は2種類あり、そのうちの新しい方は ISO 8601 に基づく書式です。 XML Schema のデータ型のものと似ていますが、 微妙に異なります。
[14]
XLIFF 1.1 Specification (2006-07-08 02:30:08 +09:00
版) http://www.oasis-open.org/committees/xliff/documents/cs-xliff-core-1.1-20031031.htm#date
[22] XLIFF 1.2 Specification ( 版) http://docs.oasis-open.org/xliff/v1.2/os/xliff-core.html#date
[15]
Global Information Management eXchange Metrics Volume 1.0 Specification (2007-02-24 17:44:10 +09:00
版) http://www.lisa.org/standards/gmx/GMX-V.html#Attr_date
[16]
TMX Specification (2007-02-24 17:51:20 +09:00
版) http://www.lisa.org/standards/tmx/tmx.html#changedate
(名無しさん)
[17]
TMX Specification (2007-02-24 17:51:20 +09:00
版) http://www.lisa.org/standards/tmx/tmx.html#creationdate
(名無しさん)
[18]
TMX Specification (2007-02-24 17:51:20 +09:00
版) http://www.lisa.org/standards/tmx/tmx.html#lastusagedate
(名無しさん)
[19]
XML Text Memory Namespace 1.0 Specification (2007-02-24 17:56:51 +09:00
版) http://www.lisa.org/standards/xmltm/xml-tm.html#Attr_date
(名無しさん)
[20] TermBase eXchange Link (TBX Link) Specification ( 版) http://www.lisa.org/standards/tbxlink/tbxlink.html#Attr_date
[12] PICSの日付形式は2種類あり、そのうちの古い方は
ISO 8601 に基づいた書式であることを意図していましたが、
日付の部分の区切子に誤って HYPHEN-MINUS
ではなく FULL STOP
を使っていました。
(新しい方の書式では修正されています。)
[13] ISO 8601 の日本版規格である JIS X 0301 (>>39) は、 ISO 8601 に加えて元号を使った和暦の年号を表現するための書式を規定しています。
[21] HTMLの日付形式は実質的に ISO 8601 のプロファイルですが、 ISO 8601 を引用せずに定義されています。 HTML は閏秒に対応していないなどの違いもあります。
[186] OGPの日時形式も、 ISO 8601 を基にしています。
[191] AWS は ISO 8601 形式と称して、 YYYYMMDDThhmmssZ
のような記号を使わない形式を用いています >>190。
[187] XMPPの日時形式も、 ISO 8601 から派生したものです。
[358] Modified ISO8601 - ACP_Proposal_Modified_ISO8601.pdf, , https://fhiso.org/wp-content/uploads/gravity_forms/1-f519698841e98c110faf9a3c2f50cd0e/2013/03/ACP_Proposal_Modified_ISO8601.pdf
yyyy-Qq
の
q
を [ 1, 4 ]
として四半期を表すことを提唱し、 ISO への提案を求めています。
[405] MongoDB Extended JSONにおける日時
[203] RFC 3339 は、RFC 3339の日時形式を規定するだけでなく、 ISO 8601:1988 の ABNF 構文も参考として示しています >>202。
[243] ISO 19103の日時形式は、
Date
,
Time
,
DateTime
など ISO 8601の日時形式を採用したデータ型です。
ISO 19108 など ISO 19100シリーズで使われています。
[269] DSSSL の JIS X 4153:1998 8.5.11 は、 「ISO 8601形式の日付又は時刻」 を扱っていました。
[270]
ISO 12083:
JIS X 0804-1996 p.115
DATE
要素では、
[271]
DC の Date
は
ISO 8601
のプロファイルを推奨していました。
JIS 版は
JIS X 0301
のプロファイルを推奨していました。
その具象構文の一種である
RSS 1.0
の
dc:date
は、
W3C-DTF とすることを求めていました。
dc:date
[310] RFC 767 - Structured format for transmission of multi-media documents, , https://tools.ietf.org/html/rfc767#page-7
[313] STONの日時形式
[317]
「ISO style」が何を意味するか明らかではありませんが、
ISO 8601
のことだとすると、 +TZ.TZ
は構文が微妙に違っています。
[316] こちらの 「ISO style」 は ISO 8601 の形式。
[323]
Sailthruの日時形式は ISO 8601 に従うとドキュメントに書いていますが、
ドキュメントがそうでない例ばかり示しています。
[328] FITAの日時形式は日時の基本書式の独自の拡張と、 相対時刻記述のための拡張がなされています。
YYYY-MM-DD (or YYYYMMDD)
[410] Date形式
JIS X 0301の表記方法に従う。"2001-11-10"のよう に省略して表記することも可能。詳細は"http://www.w3.org/TR/NOTE-datetime"を参照。
[411] >>410 JIS X 0301 (ISO 8601) に従うといっているのになぜか W3C-DTF を参照させている。どちらに従うべきなのか。
[412] Time形式
時間を記録するための形式。“XXdXXhXXmXXsXXXms”(Xは0〜9の数字)の形式で記述する。例え ば,“10d5h30m10s015ms”の場合,10日と5時間30分10秒15ミリ秒であることを示す。必要に応じて, “5m30ms”,“1s”などと省略可能。dよりも前の桁数は制限しない。
[234] 他の ISO の国際標準と同じように、 各国の国内規格ともなっています。
[275] 米国連邦政府の情報処理用標準規格 FIPS 4 (Federal Information Processing Standard 4) Calendar Date は、 に制定され、 に施行されました。 (施行日以前でも当事者間の合意により実施可能とされました。) >>274
001
(January 1) - 365
[287] ANSI X3.30-1971 は、 西暦1971年に制定されました。
[288] ANSI X3.30-1985 は、 に制定されました。 ANSI X3.30-1971 を置き換える改訂版でした。 >>285
[289] ANSI X 3.30-1985 は実質的に FIPS PUB 4 と同内容でしたが、 規定はおおむね FIPS より洗練されていました。 次のように定めていました。 >>285
001
(January 1) - 365
[286] FIPS PUB 4-1 は、 に制定されました。 FIPS PUB 4 を置き換える改訂版でした。 ANSI X3.30-1985 をそのまま採用したものでした。 >>285
[306] FIPS PUB 4-1 の1991年のものとされる PDFファイルが公開されています。 その内容は ISO 8601:1988 と ISO 8601:1988/Cor.1:1991 でした。 手書きで 「Related to FIPS 4-1」 と書かれていました。 >>305
[301] FIPS PUB 4-1 に対して Change Notice 1 がに発行されました >>302。
[303] Federal Register Change Notice #2 がに発行されました。 FIPS PUB 4-1 および Change Notice 1 を置き換える改訂版で、 FIPS PUB 4-2 Representation of Calendar Date for Information Interchange となりました。 >>302
[304] Change notice 2 は FIPS PUB 4-1 に編集上の訂正を加えたものとされますが、 2000年問題対策のため改正されたものだといいます。 >>302
[327] 関連: TOPS-10の日時形式
[318] Federal Information Processing Standards Publication: for information systems - representations of local time of day for information interchange - fipspub58-1.pdf, , https://nvlpubs.nist.gov/nistpubs/Legacy/FIPS/fipspub58-1.pdf
[39] ISO 8601 の JIS 版が JIS X 0301 (旧 JIS C 6262) です。
[326]
の9月頃に正誤票が発行されたそうです。
[220] かつては JIS C 6262 は日付形式のみを定めていました。 時刻形式は別に JIS X 0302 (JIS C 6263) がありました。
[40] JIS X 0301 には ISO 8601 の翻訳に元号を使った日付形式の規定を組み込んでおり、 国際規格との対応の程度は MOD とされています。
[228] 「JIS X 0301 形式」 のような曖昧な言い方をする人がたまにいます。 「ISO 8601 形式」が曖昧なのと同様「JIS X 0301 形式」も曖昧です。 JIS X 0301 固有の元号を使う形式 (これ自体も複数あります。) を指している人もいれば、 ISO 8601 にある形式のいずれかを指している人もいます。
[44] :2002 5.1.3 で、文字に 平
とかを追加してるけど、 4.4 を修正してないのは初歩的なミス。 4.4 は
JIS X 0201 で規定する文字を使うといっているが、 平
とかは 0201 にはない。
[172] 元号を使う場合、次の接頭辞の後2桁の数字で年号を表記します。
[173] また元号を使う場合は年月日の区切りに -
ではなく .
を使います。
[221] 元号による日付の構文では、
元号を記述するものを拡張形式、
元号を省略して年月日のみとするものを基本形式としています。
どちらも区切りの .
は必要です。
[222] ISO 8601 は区切り記号がないものを基本形式、 あるものを拡張形式と呼んでおり、 JIS X 0301 が拡張した元号方式だけ一貫していません。 杜撰な拡張です。
[223] 「必要によっては」元号を示してもよいと規定されていますが、 元号なしに年のみを示すのでは年が特定できません。 元号を明示するのが基本形であるべきで、 応用分野によって元号が文脈から明確であって従来の慣用などに従い元号を省略することが好ましい場面でのみ省略を許すべきでした。 情報交換目的の規格であるにも関わらず、 情報交換における標準化の意義を理解していない者が開発した規格としか思えません。
[174] 附属書1 (参考) には、明治6年の改暦より前は適用範囲外で、 「換算には特別な注意が必要」との注記があります。 ただしこの表には「M01.01.01」が「1868-01-25」に対応するなど旧暦とグレゴリオ暦の対応関係が明治初年から明治5年までも示されています。 規定本体にはそのような規定はありませんが。
[181] 年は2桁とされているので、最新元号の100年とそれ以降も表せないことになります。
[225] 改元の前後の正当な表記ではない元号と年月日の組み合わせをどう扱うか
(認められるのかどうか、受信した時どう解釈するべきか)
には一切言及がありません。もっとも ISO 8601
自体が値域外の値を得た時どう解釈するべきかに言及していません。
附属書1 (参考) には元号の最初と最後の日付の一覧がありますが、
あくまで参考であり、元号を使った日付表現の規定との関係性は不明です。
元号の日付の慣習的解釈に従うなら、
改元を過ぎた旧元号による記述も適当に読み替えて受け入れるべきです。
[224] 平成は の改正で追加されたとみられます。 の改元から3年も JISC は何をしていたのでしょうか。
[226] こんな具合ですから、世間でほとんど相手にされていないのも当然でしょう。 (JIS X 0301 の規定する元号を使った日付と同じ構文のものは昔からよく使われていますが、 「JIS X 0301 の規定するもの」として使われていることは稀です。) 官公庁システムなどが JIS X 0301 方式を使うと定めている可能性はあります (が元号コード方式など他の方式の方が公表されている仕様書ではよくみられます)。
[227]
主要な実装で JIS X 0301 の元号の日付に対応しているのは Ruby
くらいでしょうか。その Ruby も JIS X 0301
の改正を待たずに令和に対応したようです。
[230] 、 日本政府は改正して JIS X 0301:2019 としました >>231。改正版は既存の JIS X 0301:2002 をそのまま残し、新たに JIS X 0301:2002/AMENDMENT 1:2019 情報交換のためのデータ要素及び交換形式―日付及び時刻の表記(追補1) (Data elements and interchange formats -- Information interchange -- Representation of dates and times (Amendment 1)) を追加する形とされました。
[232] Amd.1:2019 は、既存の元号に関する規定に「令」と「R」 を追加するという最低限の変更のみ行うものでした。
[233] 令和改元では比較的迅速に対応されたといえます。 技術的な変更がなく法令改正への対応のみの形式改正であるとし、 原案委員会を設ける通常の手続きではなく経済産業省が直接原案を作成し の JISC 標準第2部会に諮り、承認されました >>235。
[238] 月1回の定例スケジュールで新元号発表後最短で改正されたようです。 理論上改元後20日間は新元号を使えない空白期が生じたことになりますが、 ほぼ自明であり特別な手続きを執る必要はないと判断されたのでしょう。 (実際その通りであり、しかも閲覧も面倒な JIS の改正を急ぐよりも Webサイトの Q&A >>237 をタイムリーに更新することにリソースを集中させたのは正しい判断だったと思われます。 正式な JIS よりも公的だけど非正式であろう Web ページの記述の方が有用だというのは、 JIS の存在意義を疑わせるものではありますが...)
[268] なお、 JIS 規格票内での日付表記については、 現代日本の紀年法参照。
[169] 中華民国の CNS では、 CNS 7648 (CNS X 0003) が ISO 8601 に対応します。
[170] 巷では CNS 7648 は民国紀元の表現についても規定しているとされていて、
R.O.C.74-04-12
のように R.O.C.
を使って表記するとされています。
[171] 民国81年改正版の附録A (参考、12ページ) の例示には確かにそのような表記例が示されていました。 しかしなぜか肝心の本文にはまったく言及がありませんでした。
[265] 民国104年改正版にはそのような例示すらありませんでした。
[266] 当初版では民国紀元を使った構文も規定されていたのでしょうか。
[178] 日本語版 Wikipedia は CNS 7648 で民国紀元が
「西暦と共に標準化されている」 >>177 と述べ、
CNS が民国紀元を定義していると誤解を招くような説明をしています。
中文版と英語版は CNS に民国紀元による表記方法があると述べるにとどまっています。
ただし英語版 Wikipedia は ROC 93-05-03
という例を示しています >>179。
中文版 Wikipedia の例は R.O.C.102-01-01
>>180、
日本語版 Wikipedia の例は R.O.C.90-09-11
>>177 で、
「.」が入っていて U+0020
は入りません。
[183] タイでは TIS 1111:2535 >>217 (1992) が ISO 8601 に相当しています。 TIS 1111の日時形式は、 当時の ISO 8601の日時形式とほぼ同じものですが、 西暦4桁または2桁年号のかわりに仏暦4桁または2桁年号を採用しています。
[331] の第2次規格です >>330。 開発グループは ISO 8601 の制定作業に参加すると共に、 制定に伴い改正しました >>330。
[332] の第1次規格は ISO 2014, ISO 2015, ISO 2711, ISO 3307 に基づいていました。 >>330 (いずれも ISO 8601 の前世代に当たり、 ISO 8601 制定によって廃止された規格。)
[333] 現在公開中の第2次規格は、 ISO 8601:1988 と技術的に同等と思われます。 (要検証)
[334] PDF で公開されていますが、週を表す「W」の両側にスペースが入っているのが気になります。 (「T」などには無いのに。)
[335] Wayback Machine, https://web.archive.org/web/20170929000136/http://www.jastpro.org/un/pdf/2014_united_nations_ad_07.pdf
[336] >>335 は >>330 の日本語訳 (ページ単位の対訳)。
[337] >>335 の翻訳部分は表記面が杜撰で、 原文の「 W 」を「W」にしている箇所があります (「 W 」のままの箇所もあります)。 また PDF のテキストとして (および表示上) 「T」が半角なところと全角なところがあり、 「+」 と 「-」 は符号となるとき全角なのに、区切子の「-」は半角です。
[352] >>351 は翻訳ではないものの、 主要部分の和訳に近い。 採択としか書かれていませんが、 ISO 8601 に言及されているので、 第2次規格を知っているはずです。 (そもそもこの文書の発行が平成10年で既に第2次規格発行後。)
[354]
>>351 には ISO 8601 由来の T
だの /
だの P
だのといった区切りや時差の記述がありません。
そのかわりに範囲は前後の日時を「ダブルハイフン」でつなげると書かれています。 例えば
[355]
また時刻には
1975-02-20-1000
のように区切子が存在していません。
[356] これらは第1次規格に由来するのかもしれません。
[357] でも #page=101 には
TRADE/WP.4/INF.1 08;TD/B/FAL/INF.1 08 (October, 1988)
と書かれていて、これは第2次規格を指しているのですよ。
[218] 中華人民共和国には ISO 8601:2000 と同内容の GB/T 7408-2005 があります。 (その前は GB/T 7408-1994 でした。) >>321 独自の規定は含まれないようです。
[322] 大韓民国には KS X ISO 8601:2010 があります。 独自の規定は含まれないようです。
[8] ISO 8601 は同仕様に適合する日時の構文のみを定めており、 適合しない日時が含まれる可能性がある場合の構文解析や解釈の方法には言及がありません。
[67] また ISO 8601 は日時の多様な表現方法を認めていますが、 その中には構文上互いに区別できないものもあります。 ISO 8601 としては、 どの表現方法を採用するか事前に情報交換の当事者間の合意があるはずなので問題ないという立場なのでしょう。
[146] HTML は、任意の文字列をどう HTMLの日時形式として解釈するべきかを曖昧無く規定しています。
[166] ISO 8601 の日時形式に基づく各種仕様の中にはエラー処理の方法を一部規定するものもありますが、多くは明確に規定していません。
[324] 日時に関係して他に ISO 34000, ISO 34002, ISO 34003, ISO 34300 が開発中です。
[341] 、 ISO Recommendation R 2014-1971 (ISO/R 2014) が発行されました。 >>339
[349] 、 ISO Recommendation R 2015-1971 (ISO/R 2015) が発行されました。 >>346
[342] 以降、 ISO/TC 154 は ISO/R 2014, ISO/R 2015 を勧告から国際標準に移行することを決めました。 >>339, >>346
[338] 、 ISO 2014-1976 Writing of calendar dates in all-numeric form Représentation numérique des dates が発行されました。 >>339, >>340
[348] 、 ISO 2015-1976 Numbering of weeks Numérotage des semaines が発行されました。 >>346, >>347
[343] ISO 2014-1976 は ISO/R 2014-1971 と、 ISO 2015-1976 は ISO/R 2015-1971 と、 技術的に同等でした。 >>339, >>346
[372] 、 ISO 2711-1973 Information processing interchange - Representation of ordinal dates が ISO/TC 97 により制定されました。 に賛成多数で承認されていました。 >>371
[378] 、 ISO 3307-1975 Information interchange - Representations of time of the day, Échange d'information - Représentations de l'heure が ISO/TC 97 により制定されました。 に賛成多数で承認されていました。 >>376, >>377
[393] 、 IS0 4031-1978 Information interchange - Representation of local time differentials, Échange d'information - Représentation des différences d'heure légale が ISO/TC 97 により制定されました。 に賛成多数で承認されていました。 >>390, >>392
[373] 、 ISO 2711, ISO 3307, IS0 4031 が ISO/TC 154 に移管されたことを示す AMENDMENT SLIP が発行されました。 >>371, >>376, >>390
[259] 、 初版 ISO 8601:1988 が制定されました。 ISO/TC 154 により開発されたもので、 ISO 2014:1976, ISO 2015:1976, ISO 2711:1973, ISO 3307:1975, ISO 4031:1978 を廃止し置き換えるものでした。 >>305
[260] 、 技術訂正票 ISO 8601:1988/Cor.1:1991 が制定されました。 3箇所が訂正されました。 >>305
[261] 西暦2000年に改訂版 ISO 8601:2000 が制定されました。
[262] 西暦2004年に改訂版 ISO 8601:2004 が制定されました。
[229] 、 ISO 8601-1:2019 Date and time -- Representations for information interchange -- Part 1: Basic rules と ISO 8601-2:2019 Date and time -- Representations for information interchange -- Part 2: Extensions が出版されました。
ISO 8601-1 は基本的に前の版と同じで、 ISO 8601-2 は EDTF やプロファイルに関する規定など新規の内容でした。
[398] 、 ISO 8601-1:2019/Amd.1:2022 AMENDMENT 1: Technical corrections が ISO/TC 154 によって制定されました。 >>399
[400] ISO 8601-1:2019 の一部を改正し、規定や説明を挿入・置換するものです。 >>399
[401] 技術的に大きく変更するものではありませんが、より厳密な規定に改めるものと思われます。 (要検証)
[43] Index of ftp://elsie.nci.nih.gov/pub ftp://elsie.nci.nih.gov/pub
[1] 日付および時刻の国際標準表記法 http://www.geocities.co.jp/CollegeLife-Cafe/1646/roomazi/date-time.html: 例のまーくんの、 ISO 8601 推進のための入門的紹介文の翻訳。
[2] >>1 まあさすがに原文がまーくんだけあって中々まーくん風味のまーくん的文章ですね(謎)
[3] >>1−2 なんだかんだ言ってまーくんって英語圏では有名人で影響力ある人だし、 実際 >>1 の原文も英語の技術系 ML とか Web とかでよく参照されてるよねぇ。
[106] ISO 8601:2004 は日時の部分は比較的明確に定義されていますが、時間間隔の部分は参照が多く、 その指示するところが曖昧になっている感じがあります。
[188] PICS Signed Labels (DSig) 1.0 Specification ( ( 版)) http://www.w3.org/TR/REC-DSig-label/#Reference_Information
[189] REC-PICS-labels-961031 ( ( 版)) http://www.w3.org/TR/REC-PICS-labels-961031#Detailed
[193] ISO 8601 は :
のない基本書式と :
のある拡張書式を定義していますが、基本書式が好ましいというニュアンスではないような気が・・・。
[200] 注記の通り、 ISO 8601の日時形式を名乗っていますが、実際にはそうではありません。 (基本書式と拡張書式が混在していますが、 ISO 8601 では認められていません。)
[201] Draft Agenda – ISO/TC 154/WG 5 – Date and Time – ISO/TC 154 – "Open" Data Interchange () http://www.isotc154.org/isotc-154-2016-anual-meeting-details/isotc154wg5-agenda
[213] DocuSign REST API Guide - Appendix 2: Time Zone and Date/Time Information () https://www.docusign.com/p/RESTAPIGuide/RESTAPIGuide.htm#Appendix/Time Zone and Date-Time Information.htm%3FTocPath%3D_____12
[252] JIS X 4062:1998 4.2.7 「JIS X 0301 の暦日付完全表記拡張形式」
[273] Allow ISO 8601 formatted string for `fast_string_to_time` (kamipo, , ) https://github.com/rails/rails/commit/f870537c4706ef64744958c374fd08243a913543
[406] Xユーザーの伊藤 祐策(パソコンの大先生)さん: 「日付の表記を全世界統一にして欲しい。そんな願いを叶えてるべく作られたのがISO8601なのです...。 しかし!誰も使ってくれないのである!!使ってくれないのである!!!」 / X, , https://twitter.com/ito_yusaku/status/1720064324901962240
[407] >>406 そんな壮大な野望、 ISO 8601 のどこにも書かれていないと思うのだが... 何を根拠にそう言えるのだろうか? 作った人に聞いたのか?