[6] [DFN[[[ISO 8601]]]] は、[[日付]]と[[時刻]]の表現形式に関する [[ISO]] の[[国際標準]]です。
[[日時]]の[[情報交換]]に使えるいくつかの[[構文]] ([[日時形式]]) を定義しています。

[EG[
[182] 例えば[[グレゴリオ暦]]の[[西暦]][TIME[2016年3月25日][2016-03-25]]を [CODE[2016-03-25]]
と表現できる、といったことが規定されています。
]EG]

[168] [[ISO 8601]] は、[[日時]]に関する様々な対象を記述したり、様々な応用分野で利用したりできるように、
多くの選択肢のある“緩い”仕様を提示しています。実際には、利用する場面ごとにより具体的な仕様を
([[情報交換の当事者間の合意]]により) 確定する必要があり、それを[[プロファイル][ISO 8601のプロファイル]]と呼ぶことがあります。
[[ISO 8601のプロファイル]]は、色々な場面で使われています。

[175] [[自然言語]]文では、歴史と文化により様々な[[日時表現][日時表示]]が用いられています。
しかし[[日米欧]]で[[年月日]]の順序が異なるなど、その表記の揺れは大きく、
[[相互運用可能]]な[[情報交換]]のためには何らかの基準が必要です。
[[ISO 8601]] はそのような基準として色々な場面で採用されています。


[NOTE[
[176] しかし、いつでもどこでもむやみに [[ISO 8601]] の日時形式を採用するべきとも言えません。
例えば [[ISO 8601]] の規定に従えば日付と時刻の間には「T」と記載することになります
([TIME[2016年3月25日の12時18分][2016-03-25T12:18]]は
[CODE[2016-03-25[[T]]12:18]] と表記します。) が、
[[人間]]が対象読者なら、この表記は一般的ではありませんから、奇妙に思われるでしょう。
[[時刻]]を「'''t'''ime」と呼ぶ[[英語圏]]ですら、この表記は (人間対象には) 普及していません。

[248] 
一部で誤解があるような、すべての[[日時表示]]を統一しようと志向するものではありませんし、
そのような施策も知られていません。
]NOTE]

* 仕様書

[REFS[
- [7] '''[[ISO 8601]]'''
-- [38] [CITE@en[Home]]
([TIME[2013-12-10 08:40:33 +09:00]] 版))
<http://www.iso.org/iso/iso8601>
- [27] [[JIS X 0301]]: ISO 8601 に対応 ([[MOD]]) する [[JIS]]
]REFS]

[37] [[ISO 8601]] は >>38 から入手できますが、有料です。

;; [247] 本気で普及させようとしているのでしょうか?
[[規格票]]の販売で[[標準化]]する[[ビジネスモデル]]が過去のものになってもはや何十年も経過しています。

[325] 開発は
[[ISO/TC 154/WG 5]]
が担当しています。

** 表記法

[45] [[ISO 8601]] では[[地の文]]と[[日時表現]]や[[日時書式表現]]を区別するために、
[RUBYB[表現]@en[representation]]を「[」と「]」で括っています。この括弧は仕様書の表現上のもので、
表現の一部ではないとされています。 [SRC[>>7 Introduction]]

[244] 実際 [[ISO 8601]] 以外でこの表記法はあまり見かけません。

* 暦法

[219] 
[[ISO 8601]] は[[先発グレゴリオ暦]]を採用しています。
[SEE[ [[先発グレゴリオ暦]]、[[グレゴリオ暦]]、[[ISO 8601の年]] ]]

[250] 
[[ISO 8601]] 本体は[[西暦年]]にだけ対応しています。
他の[[紀年法]]は利用できません。

[251] 
ただし [[ISO 8601]]
の各国版は、
当該国の[[紀年法]]に対応している場合があります
(>>234)。

[364] 
[[ISO 8601]] の[[週暦]]は、通称[[ISO週暦]]と呼ばれるものです。

* 表現

[126] [[ISO 8601]] は[[日時などを記述した文字列][日時形式]]のことを[DFN[[RUBYB[表現]@en[representation]]]]と呼んでいます。
[[ISO 8601]] では次のような[[表現][表現 (ISO 8601)]]が定義されています。

[FIG[
- [[日時表現]]
-- 日付の表現
-- 時刻の表現
-- 時差の表現
-- 日時の表現
-- 時間長の表現
-- 時間間隔の表現
-- 反復時間間隔の表現
- [[日時書式表現]]
]FIG]

[26] [DFN[[RUBYB[[[日時表現]]]@en[date and time representation]]]]は、
[[時間点]]や[[時間間隔]]、[[反復時間間隔]]を示す[RUBYB[表現]@en[representation]]です [SRC[>>7 2.3.1]]。

[36] [[日時表現]]は精度や値域によって次のように分類されています。
[FIG[
- [32] [DFN[[RUBYB[[[完全表現]]]@en[complete representation]]]]は、
当該表現を構成するすべての日時の要素を含めた表現です。 [SRC[>>7 2.3.5]]
-- 要素としてはすべて含まれますが、5桁以上の年や小数部は含まれません。
- [33] [DFN[[RUBYB[[[小数付き表現]]]@en[decimal representation]]]]は、
構成する下位の部品に[[小数]]を加えたものです。 [SRC[>>7 2.3.6]]
- [34] [DFN[[RUBYB[[[精度を削減した表現]]]@en[representation with reduced accuracy]]]]は、
下位の部品を省略したものです。 [SRC[>>7 2.3.7]]
- [35] [DFN[[RUBYB[[[展開表現]]]@en[expanded representation]]]]は、
0年より前や9999年より後の[[暦年]]を表現できるようにしたものです。 [SRC[>>7 2.3.8]]
- [141] [DFN[[RUBYB[[[切り詰めた表現]]]@en[truncated representation]]]]は、
構成する上位の部品を省略したものです。 [SRC[[[ISO 8601:2000]] 4.6]]
-- [[ISO 8601:2004]] では削除されています。
]FIG]

[127] [[完全表現]]は、週による表記と月日による表記のように、複数存在することがあります。
それ以外の表現も、月までの精度の表現と年までの精度の表現のように、複数存在することがあります。
月までの精度で年を展開した表現のように、複数に該当する表現もあり得ます。

[130] 複数の表現を組み合わせて構成される表現では、違った精度の表現を混在させることができます。
例えば[[日時]]を表す際に、[[日付]]の[[完全表現]]と[[時刻]]の[[精度を削減した表現]]を組み合わせることができます
(もちろんそれは[[日時]]の[[完全表現]]ではありません)。

[69] また記号の有無によって次の分類があります。

[FIG[
- [29] [DFN[[RUBYB[[[基本書式]]]@en[basic format]]]]は、
要求される精度に必要なだけの最小の時刻要素により構成される[[日時表現]]または[[日時書式表現]]の書式です
[SRC[>>7 2.3.3]]。
- [31] [DFN[[RUBYB[[[拡張書式]]]@en[extended format]]]]は、
[[基本書式]]に追加の[[分離子]]を含めて拡張したものです [SRC[>>7 2.3.4]]。
]FIG]

;; [30] [[基本書式]]は、[[平文]]では避けるべきです [SRC[>>7 2.3.3 NOTE]]。

[128] [[基本書式]]と[[拡張書式]]がある場合、[[拡張書式]]から特定の[[分離子]]を除去したものが[[基本書式]]になっています。
除去できる[[分離子]]がない場合には、[[拡張書式]]はありません。

[131] 複数の表現を組み合わせて構成される表現では、[[基本書式]]と[[拡張書式]]を混在させることは禁止されています。

;; [132] [[24時間制]]の普及によって[[分離子]]は必要なくなった [SRC[>>7 Annex A]] 
という見方により、[[数字]]のみで構成される方が「基本」で、[[分離子]]が含まれる方が「拡張」
とされているようです。
(この考え方が世間一般で通用するかは甚だ疑問です。)

[129] 表現や書式の種類は沢山ありますが、基本的にはどれが良いとかどれが優れているといったような区別ではなく、
必要に応じて使い分けることが想定されているようです。

[160] [[ISO 8601//ABNF]] に、[[日時表現]]を [[ABNF]] で表したものがあります。

* 日時書式表現

[28] [DFN[[RUBYB[[[日時書式表現]]]@en[date and time format representation]]]]は、
[[日時表現]]の群の書式を説明する[RUBYB[表現]@en[representation]]です [SRC[>>7 2.3.2]]。

[46] これは一種のパターン言語で、 [[ISO 8601]] 仕様書で[[日時表現]]の構文を定義する [SRC[>>7 3.3]]
ためのものですが、[[情報交換]]において[[日時表現]]がどのように記述されているかを示すために用いることもできます。

[EG[
[147] 例えば [CODE[YYYY-MM]] という[[日時書式表現]]は、 [CODE[2000-03]] や
[CODE[1985-12]] や [CODE[0003-01]] などの年月の[[日時表現]]を表しています。
]EG]

[47] [[情報交換の当事者間の合意]]により、[[日時書式表現]]を転送しても構いません [SRC[>>7 3.3, >>7 5]]。
その場合 [[ISO 8601]] により認められた[[日時書式表現]]のみを用いなければなりません [SRC[>>7 3.3]]。
また、[[情報交換の当事者間の合意]]により認められた[[日時表現]]に対応する[[日時書式表現]]のみ用いなければなりません
[SRC[>>7 5]]。

[51] [[ITU-T S.1]] [[レパートリ]] ([[telex]] など) を用いる環境では、
[[日時書式表現]]を用いてはなりません。 [SRC[>>7 3.4.1]]

[54] [[日時書式表現]]では、次の[[文字]]を使います [SRC[>>7 3.4.2]]。

,*[[文字]],*意味
,[CODE[[[Y]]]],[[年]]の[[数字]]
,[CODE[[[M]]]],[[月]]の[[数字]]
,[CODE[[[D]]]],[[日]]の[[数字]]
,[CODE[[[w]]]],[[週]]の[[数字]]
,[CODE[[[h]]]],[[時]]の[[数字]]
,[CODE[[[m]]]],[[分]]の[[数字]]
,[CODE[[[s]]]],[[秒]]の[[数字]]
,[CODE[[[n]]]],[[正数]]または[[0]]の[[数字]]

[55] [CODE[[[±]]]] は、[[正数]]または[[0]]の [CODE[[[+]]]] または[[負数]]の[[マイナス]]を表します 
[SRC[>>7 3.4.2]]。ただし [CODE[[[±]]]] を使えない環境では、[[日時書式表現]]に
[CODE[[[±]]]] を含められません [SRC[>>7 3.4.1]]。

;; [86] [[0]] を表すために[[マイナス]]を用いることは認められていません。

[48] [[下線]]は、[[日時表現]]においてそれに相当する部分が複数文字に展開され得ることを表します [SRC[>>7 3.3]]。
>>54 の[[数字]]を表す[[文字]]に[[下線]]があると、それが0[[文字]]以上であることを表します [SRC[>>7 3.4.2]]。
[[日時書式表現]]の[[情報交換]]の時点で文字数がわかっている時には、[[下線]]を用いてはなりません [SRC[>>7 3.3, >>7 5]]。 
[[文字]]に[[下線]]を付けられない環境では、[[文字]]の前に[[下線]]を置かなければなりません [SRC[>>7 3.4.1]]。

[EG[
[245] 例えば [CODE[n[U[n]]]] や [CODE[n_n]] は、1桁以上の[[数字]]で[[非負整数]]を記述したものです。
]EG]

[56] その他の[[文字]]は、[[日時表現]]でも同じ[[文字]]を表します [SRC[>>7 3.4.2]]。

[133] [[JIS X 0301]] による拡張では、 [CODE[[[N]]]] が[[元号]]の記号を表します [SRC[>>27 5.1.3]]

* 日付の表現

[70] [[暦日付]]に関しては、次の表現が定義されています [SRC[>>7 4.1.2]]。

,                                  ,[[基本形式]]         ,[[拡張形式]]
,[[完全表現]] - [[日]]             ,[CODE[YYYYMMDD]]     ,[CODE[YYYY‐MM‐DD]]
,[[精度を削減した表現]] - [[月]]   ,[CODE[YYYY‐MM]]     ,なし
,[[精度を削減した表現]] - [[年]]   ,[CODE[YYYY]]         ,なし
,[[精度を削減した表現]] - [[世紀]] ,[CODE[YY]]           ,なし
,[[展開表現]] - [[日]]             ,[CODE[±_YYYYYMMDD]] ,[CODE[±_YYYYY‐MM‐DD]]
,[[展開表現]] - [[精度を削減した表現]] - [[月]]             ,[CODE[±_YYYYY‐MM]]  ,なし
,[[展開表現]] - [[精度を削減した表現]] - [[年]]             ,[CODE[±_YYYYY]]     ,なし
,[[展開表現]] - [[精度を削減した表現]] - [[世紀]]           ,[CODE[±_YYY]]       ,なし


[72] [[通日日付]]に関しては、次の表現が定義されています [SRC[>>7 4.1.3]]。

,                                  ,[[基本形式]]         ,[[拡張形式]]
,[[完全表現]] - [[日]]             ,[CODE[YYYYDDD]]      ,[CODE[YYYY‐DDD]]
,[[展開表現]] - [[日]]             ,[CODE[±_YYYYYDDD]]  ,[CODE[±_YYYYY‐DDD]]

[73] [[週日付]]に関しては、次の表現が定義されています [SRC[>>7 4.1.4]]。

,                                  ,[[基本形式]]         ,[[拡張形式]]
,[[完全表現]] - [[日]]             ,[CODE[YYYYWwwD]]     ,[CODE[YYYY‐Www‐D]]
,[[精度を削減した表現]] - [[週]]   ,[CODE[YYYYWww]]      ,[CODE[YYYY‐Www]]
,[[展開表現]] - [[日]]             ,[CODE[±_YYYYYWwwD]] ,[CODE[±_YYYYY‐Www‐D]]
,[[展開表現]] - [[精度を削減した表現]] - [[週]]   ,[CODE[±_YYYYWww]]      ,[CODE[±_YYYY‐Www]]

;; [74] 「[CODE[W]]」はそのまま[[日時表現]]に現れます (>>367)。

[HISTORY[
[142] 以前は更に次の表現が定義されており、[[情報交換の当事者間の合意]]により用いることができました
[SRC[[[ISO 8601:2000]] 5.2.1.3, 5.2.2.2, 5.2.3.3]]。

,*                                  ,*[[基本形式]]         ,*[[拡張形式]]
,[[切り詰めた表現]] - [[世紀]]省略 ,[CODE[YYMMDD]]       ,[CODE[YY‐MM‐DD]]
,[[切り詰めた表現]] - [[精度を削減した表現]] - [[世紀]]省略 ,[CODE[‐YYMM]]        ,[CODE[‐YY‐MM]]
,[[切り詰めた表現]] - [[精度を削減した表現]] - [[世紀]]省略 ,[CODE[‐YY]]          ,なし
,[[切り詰めた表現]] - [[年]]省略   ,[CODE[--MMDD]]       ,[CODE[‐‐MM‐DD]]
,[[切り詰めた表現]] - [[精度を削減した表現]] - [[年]]省略 ,[CODE[‐‐MM]]        ,なし
,[[切り詰めた表現]] - [[精度を削減した表現]] - [[年]][[月]]省略 ,[CODE[‐‐‐DD]]       ,なし
,[[切り詰めた表現]] - [[世紀]]省略 ,[CODE[YYDDD]]       ,[CODE[YY‐DDD]]
,[[切り詰めた表現]] - [[精度を削減した表現]] - [[年]]省略 ,[CODE[‐DDD]] ([CODE[‐]] 1つ!),なし
,[[切り詰めた表現]] - [[世紀]]省略 ,[CODE[YYWwwD]]       ,[CODE[YY‐Www‐D]]
,[[切り詰めた表現]] - [[精度を削減した表現]] - [[世紀]]省略 ,[CODE[YYWww]]       ,[CODE[YY‐Www]]
,[[切り詰めた表現]] - [[十年紀]]省略 ,[CODE[-YWwwD]]       ,[CODE[‐Y‐Www‐D]]
,[[切り詰めた表現]] - [[精度を削減した表現]] - [[十年紀]]省略 ,[CODE[‐YWww]]       ,[CODE[‐Y‐Www]]
,[[切り詰めた表現]] - [[年]]省略 ,[CODE[‐WwwD]]       ,[CODE[‐Www‐D]]
,[[切り詰めた表現]] - [[精度を削減した表現]] - [[年]]省略 ,[CODE[‐Www]]       ,なし
,[[切り詰めた表現]] - [[週]]省略 ,[CODE[‐W‐D]]       ,なし

[143] これらの先頭の省略を表す [CODE[‐]] は、
曖昧でない場合省略できる
[SRC[[[ISO 8601:2000]] 4.6, 5.2.1.3, 5.2.2.2, 5.2.3.3]]
とされていました。
]HISTORY]

[HISTORY[

[344]
[[暦日付]]の[[完全表現]]は [[ISO 8601]] の前身の1つ [[ISO 2014]] に由来します。
[[年]]は4桁でなければ[MUST[[RUBYB[ならない][shall]]]]のが原則で、
明確な時は2桁にすることができると
[[NOTE]] にありました。
[SRC[>>339]]

]HISTORY]

[HISTORY[

[374] 
[[通日日付]]の[[完全表現]]は [[ISO 8601]] の前身の1つ [[ISO 2711]] に由来します。

[[year]] ([[年]]) と [[day of year]] ([[年の日]]) はそれぞれ別個に使ってもよく、
この順で組合せて使っても良いとされていました。
[SRC[>>371]]

[[年]]は4桁ですが、2桁の [[year of century]] ([[世紀の年]])
や 1桁の [[year of decade]] ([[十年紀の年]])
とする選択肢も認められていました。
[SRC[>>371]]


]HISTORY]

[HISTORY[
[375] 
[[ISO 2711]] 
の[[通日日付]]は[[機械処理]]で便宜上用いられることがあるとし、
その他の目的には
[[ISO/R 2014]] 
の[[暦日付]]を使わなければ[MUST[[RUBYB[ならない][shall]]]]としていました。
[SRC[>>371]]

]HISTORY]

-*-*-

[135] [[JIS X 0301]] は[[元号]]による[[日付]]の表現も定義しています [SRC[>>27 5.2.4]]

,                                  ,[[基本形式]]         ,[[拡張形式]]
,[[完全表現]] - [[日]]             ,[CODE[YY.MM.DD]]     ,[CODE[NYY.MM.DD]]

;; [136] ここで [CODE[.][FULL STOP]] は[[小数点]]ではなく、
[[ピリオド]] [SRC[>>27 5.2.4]] とされています
(>>139)。

;; [137] [[完全表現]]以外は定義されていないようです。また、他の表現との組み合わせも定義されていないようです。
([[日時]]を組み合わせた表現すら定義されていませんが、いいのでしょうか。。。)


[319] 
[CITE@ja[ISO8601(X0301)の桁数拡張: suchowan's blog]], [TIME[2022-04-26T03:01:05.000Z]] <https://suchowan.at.webry.info/201309/article_6.html>

[320] 
[CITE@ja[ISO8601(X0301)用オプション: suchowan's blog]], [TIME[2022-04-27T06:17:51.000Z]] <https://suchowan.at.webry.info/201312/article_11.html>

* 時の表現

[75] [[地方時]]に関しては、次の表現が定義されています [SRC[>>7 4.2.2]]。

,                                  ,[[基本形式]]         ,[[拡張形式]]
,[[完全表現]] - [[秒]]             ,[CODE[hhmmss]]       ,[CODE[hh:mm:ss]]
,[[精度を削減した表現]] - [[分]]   ,[CODE[hhmm]]         ,[CODE[hh:mm]]
,[[精度を削減した表現]] - [[時]]   ,[CODE[hh]]           ,なし
,[[小数付き表現]] - [[秒]]         ,"[CODE[hhmmss,s_s]] ","[CODE[hh:mm:ss,s_s]]"
,[[小数付き表現]] - [[精度を削減した表現]] - [[分]],"[CODE[hhmm,m_m]]","[CODE[hh:mm,m_m]]"
,[[小数付き表現]] - [[精度を削減した表現]] - [[時]],"[CODE[hh,h_h]]",なし

[144] 以前は更に次の表現が定義されており、[[情報交換の当事者間の合意]]により用いることができました
[SRC[[[ISO 8601:2000]] 5.3.1.4]]。

,                                  ,[[基本形式]]         ,[[拡張形式]]
,[[切り詰めた表現]] - [[時]]省略   ,[CODE[‐mmss]]       ,[CODE[‐mm:ss]]
,[[切り詰めた表現]] - [[精度を削減した表現]] - [[時]]省略 ,[CODE[‐mm]]       ,なし
,[[切り詰めた表現]] - [[精度を削減した表現]] - [[分]]省略 ,[CODE[‐‐ss]]       ,なし
,[[切り詰めた表現]] - [[小数付き表現]] - [[時]]省略   ,"[CODE[‐mmss,s_s]]","[CODE[‐mm:ss,s_s]]"
,[[切り詰めた表現]] - [[小数付き表現]] - [[精度を削減した表現]] - [[時]]省略   ,"[CODE[‐mm,m_m]]",なし
,[[切り詰めた表現]] - [[小数付き表現]] - [[精度を削減した表現]] - [[分]]省略   ,"[CODE[‐‐ss,s_s]]",なし

[145] なおこれらの先頭の省略を表す [CODE[[[-]]]] は、曖昧でない場合省略できるとされていました
[SRC[[[ISO 8601:2000]] 4.6, 5.3.1.4]]。


[HISTORY[

[381] 
[[ISO 8601]] の前身の1つ [[ISO 3307]] は、
[[時]]を [CODE[00]] から [CODE[23]] としていました
([CODE[24]] は不可)。
[[分]]と[[秒]]を [CODE[00]] から [CODE[59]] としていました
([[閏秒]]の [CODE[60]], [CODE[61]] は不可)。
[SRC[>>376]]

[382] 
次の組み合わせが認められていました。
[SRC[>>376]]

- [383] 時
- [384] 時と時の小数部
- [385] 時と分
- [386] 時と分と分の小数部
- [387] 時と分と秒
- [388] 時と分と秒と秒の小数部

]HISTORY]

[81] [RUBYB[[[日のUTC]]]@en[UTC of day]]に関しては、 >>75 の各表現の後に 
[DFN[[RUBYB[[[UTC指示子]]]@en[UTC designator]]]] [DFN[[CODE[[[Z]]]]]]
を付けたものが定義されています [SRC[>>7 4.2.4]]。

[87] [[地方時]]と、[[地方時]]と[[UTC]]の[[時差]]を示す必要がある時は、
[[地方時]]の直後に[[時差]]の表現を続けることができます [SRC[>>7 4.2.5.2]]。

[90] [[地方時]]においては[[空文字列]]、[[日のUTC]]においては [[UTC指示子]] [CODE[[[Z]]]]、
[[時差]]付きの場合においては[[時差]]のことを[DFN[[RUBYB[[[時間帯指示子]]]@en[zone designator]]]]といいます
[SRC[>>7 4.3.2]]。

[76] [[地方時]]の表現 (>>75) の前に[[時刻指示子]] [DFN[[CODE[[[T]]]]]] を付けた[DFN[[RUBYB[時刻指示子付き表現]@en[representation with time designator]]]]を用いることができます。
文脈上[[地方時]]の表現であるか不明瞭な場合には、これを用いなければなりません。 [SRC[>>7 4.2.2.5]]

;; [82] [[日のUTC]]の表現 (>>81) や[[時差]]付きの表現 (>>87) と[[時刻指示子]]の併用については言及がありません。 
([[UTC指示子]]や[[時差]]により明確に[[時刻]]と判断できるからでしょうか。)

[HISTORY[
[389] 
[[ISO 8601]] の前身の1つ [[ISO 3307]] は、
無指定で [[local time]] ([[地方時]])、
[CODE[Z]] 付きで [[UTC]]
の2種類を定めていました。
[[時差]]の指定はできませんでした。
[SRC[>>376]]
]HISTORY]

[194] [[閏秒]]もあります。

* 時差の表現

[83] [[地方時]]と[[日のUTC]]の[[時差]]に関しては、次の表現が定義されています [SRC[>>7 4.2.5.1]]。

,                                  ,[[基本形式]]         ,[[拡張形式]]
,[[分]]                            ,[CODE[±hhmm]]       ,[CODE[±hh:mm]]
,[[時]]                            ,[CODE[±hh]]         ,なし

[85] [[地方時]]の表現とは違って、[[分]]を省略できるのは、[[分]]が 0 になるときだけです [SRC[>>7 4.2.5.1]]。
[[精度を削減した表現]]や[[小数付き表現]]はありません。

[84] [[時差]]は[[地方時]]の表現と併用するもので、単独での利用は禁止されています [SRC[>>7 4.2.5.1]]。

;; [185] [[RFC 3339の日時形式]]は [CODE[-00:00]] に特別な意味を与えていますが、
[[ISO 8601]] にはそのような規定はなく、[[ローカルルール]]です。
(そうしたローカルルールが [[ISO 8601]] により認められるかどうか、
議論の余地があります。)


[HISTORY[
[394] 
[[ISO 8601]] の前身の1つ [[ISO 4031]] は、
[DFN[TDF]]
([DFN[time differential factor]])
として
[CODE[±hhmm]] / [CODE[±hh:mm]]
相当のものを規定していました。
[SRC[>>390]]

[395] 
[CODE[:]] が認められるのか規定本文では若干心もとないのですが、
例示で有無両パターンが明記されています。
[SRC[>>390]]

[396] 
[[UTC]] との[[時差]] -1200 から +1300 までがある、
と説明されていました。
[SRC[>>390]]
規定なのか[[制定当時の事実の提示][事実の文]]に過ぎないのか不明瞭ですが、
そう書かれているとこの範囲のみ対応すれば十分と思ってしまいそうです。

[397] 
本規格は [[ISO 2014]], [[ISO 2711]], [[ISO 3307]] と併用すると書かれていました。
[SRC[>>390]]
具体的に例示されているのは [[ISO 3307]] の時刻の構文との併用だけで、
[[暦日付]]や[[通日日付]]との併用の可否や方法はよくわかりません。


]HISTORY]


* 日時の表現


[88] [[日時]]に関しては、次のいずれかの[[日付]]の表現 ([[完全表現]]または[[展開表現]])
の後に[[時刻指示子]] [CODE[[[T]]]] の後に >>75、>>81、>>87 のいずれかの[[時刻]]の表現が来るものが定義されています
[SRC[>>7 4.3]]。

,[[基本形式]]         ,[[拡張形式]]
,[CODE[YYYYMMDD]]     ,[CODE[YYYY‐MM‐DD]]
,[CODE[±_YYYYYMMDD]] ,[CODE[±_YYYYY‐MM‐DD]]
,[CODE[YYYYDDD]]      ,[CODE[YYYY‐DDD]]
,[CODE[±_YYYYYDDD]]  ,[CODE[±_YYYYY‐DDD]]
,[CODE[YYYYWwwD]]     ,[CODE[YYYY‐Www‐D]]
,[CODE[±_YYYYYWwwD]] ,[CODE[±_YYYYY‐Www‐D]]

;; [161] [[日付]]に[[精度を削減した表現]]を使うことはできません。 ([[時刻]]では使えます。)

;; [162] [[ISO 8601:2000]] では、[[日付]]に[[切り詰めた表現]]が認められていました 
[SRC[[[ISO 8601:2000]] 5.4.2]]。 ([[時刻]]では使えません。)

;; [89] [[日時]]共に[[完全表現]]であるものが、[[日時]]の[[完全表現]]です [SRC[>>7 4.3.2]]。

[91] [[時刻指示子]] [CODE[[[T]]]]  は、[[情報交換の当事者間の合意]]があれば、
曖昧でない場合省略できます。 [SRC[>>7 4.3.2 NOTE]]

[92] [[日時]]の[[基本形式]]と[[拡張形式]]を混在させることはできません [SRC[>>7 4.3.3]]。

* 時間長の表現

[100] [DFN[ISO 8601の時間長形式]]としては、次の表現が定義されています [SRC[>>7 4.4.3]]。

[FIG(list)[
- [[完全表現]] [CODE[Pn_nW]]
- [[完全表現]] [CODE[Pn_nYn_nMn_nDTn_nHn_nMn_nS]]
- [[精度を削減した表現]] [[情報交換の当事者間の合意]]により、下位の部品を省略できます
- [[小数付き表現]] [[情報交換の当事者間の合意]]により、下位の部品に[[小数点]]と[[小数部]]を含められます
]FIG]

[105] 値が0なら、その値と直後の[[指示子]]は省略できます。[[時]]と[[分]]と[[秒]]がすべて省略されるなら、
[CODE[[[T]]]] も省略しなければなりません。しかしすべて省略して [CODE[[[P]]]]
のみとしてはなりません。 [SRC[>>7 4.4.3.2]]

[104] 数字列が、その直後の[[指示子]]を単位とする[[時間長]]の値と解釈されます。
全体としては個々の[[時間長]]の[[和]]を表します。

[103] 数字列の最大桁数は、[[情報交換の当事者間の合意]]によります [SRC[>>7 4.4.3.2]]。

[101] [[時間長]]の表現は[[時間間隔]]や[[循環時間間隔]]の一部として使われるもので、
単独での利用を推進するものではない [SRC[>>7 4.4.3.2]] とされています。

;; [102] 実際にはむしろ[[時間間隔]]よりも[[時間長]]単独での方が用いられているようです。

** 代替形式

[107] [[情報交換の当事者間の合意]]により、[RUBYB[代替形式]@en[alternative format]]を用いることもできます。
これは日時の表現の前に [CODE[[[P]]]] を付けたものです。 [SRC[>>7 4.4.3.3]]

- [[暦日付]] [CODE[PYYYY‐MM‐DD]]
- [[通日日付]] [CODE[PYYYY‐DDD]]
- [[地方時]] [CODE[PThh:mm:dd]]
- [[暦日付]]の[[日時]] [CODE[PYYYY‐MM‐DDThh:mm:dd]]
- [[通日日付]]の[[日時]] [CODE[PYYYY‐DDDThh:mm:dd]]

[108] ここに示したものの他に、[[基本書式]]、[[精度を削減した表現]]、[[小数付き表現]]、[[展開表現]]も認められているようです。

;; [165] [[展開表現]]で[[負]]の[[年]]は意味をなさなそうですが、それも認められているのかは不明です。

[109] ただしこれらは日付としてではなく、[[時間長]]として扱われるため、値域が違っています。
[[年]]、[[月]]、[[日]]は 0 から始まります。また 12月、30日、24時、60分、60秒は認められないようです。
[SRC[>>7 4.4.3.3]]

;; [110] [[通日日付]]の場合が明記されていませんが、364日までOKでしょうか。[[暦日付]]との整合性を考えると
359日までOKかもしれません。

;; [119] [[週]]による表記が認められていないのは、1年が52週か53週か決められないから
[SRC[>>7 4.4.3.3 NOTE]] とされています。

** 派生

[242] [CODE[TM_PeriodDuration]]
は [[ISO 8601の時間長形式]]を使った[[データ型]]です。
構文を制限し、[[グレゴリオ暦]]と [[UTC]] 以外にも拡張しています。

* 時間間隔の表現

[93] [DFN[ISO 8601の時間間隔形式]]は、

- [94] 開始と終了 [SRC[>>7 4.4.1 a)]]
- [95] [[時間長]]と文脈 [SRC[>>7 4.4.1 b)]]
- [96] 開始と[[時間長]] [SRC[>>7 4.4.1 c)]]
- [97] [[時間長]]と終了 [SRC[>>7 4.4.1 d)]]

... の4種類の方法で記述できます [SRC[>>7 4.4.1]]。このうち >>94、>>96、>>97 は完結した情報ですが、
>>95 は[[時間]]のみで構成される不完全な [[time interval]] 情報で、
その意味を解釈するためには何らかの文脈情報が必要です。

[FIG(railroad)[
= |
== =
=== [[日時]]
=== [CODE(URI)[[[/]]]]
=== |
==== [[日時]]
==== [[時間長]]
== =
=== [[時間長]]
=== ?
==== [CODE(URI)[[[/]]]]
==== [[日時]]
]FIG]

** 開始と終了による表現

[111] [[日時]]の表現を、開始と終了で2つ並べて、[CODE[[[/]]]] で区切ったものです。

[112] すべて[[基本書式]]、またはすべて[[拡張書式]]で構成されなければなりません [SRC[>>7 4.4.4.1, >>7 4.4.4.5, >>7 4.4.5]]。

[113] 両者の前後関係は明記されていませんが、開始と終了ですから、前者が後者以下でなければならないものと思われます。

[121] 終了側の上位側が省略されていれば、開始側と同じ値とみなされます [SRC[>>7 4.4.5]]。

[EG[
[122] 例えば [CODE[1985-04-12/06-25]] は、1985年4月12日から1985年6月25日を表します [SRC[>>7 B.1.4]]。
]EG]

;; [124] 省略の仕方によっては何を表すのかわからなくなりますが、どこまで省略できるのか、
どう解釈するべきなのかは記述されていません。例えば[[基本書式]]で上位を省略したものと下位を省略したものは区別がまったくできないケースがあります。
また[[拡張書式]]でも、[[時]]まで省略して分と秒だけのものと、 [CODE[T]] まで省略して時と分だけで秒がないものは、
区別できないケースが有ります。

;; [159] 流石に日時とも省略されて[[時差]]だけ残るケースは認められないと思うのですが、どうでしょうか。

[120] 開始側に[[UTC指示子]]か[[時差]]が含まれていて、終了側に含まれていなければ、
開始側の[[時間帯]]が終了側にも適用されます [SRC[>>7 4.4.5]]。

[123] 精度を削減する時に前後で精度が一致していなければならないという規定はありませんから、
[CODE[1098-01-05/1993-03-05T00:12:44]] のような表現も良いことになります。

-*-*-

[308] [[RKMSの時間範囲形式]]は、不明を表すために開始と終了の一方を省略可能とした拡張でした。

[309] [[Date Ranges (Dublin Core)]] は、 [[W3C-DTF]]
に限定しつつ、開始と終了の一方を省略可能とした拡張でした。

** 時間長と文脈による表現

[114] [[時間長]]の表現によって、[[時間間隔]]の表現とするものです [SRC[>>7 4.4.4.2, >>7 4.4.4.5, >>7 4.4.5]]。

** 開始と時間長による表現

[115] 開始の[[日時]]の表現と[[時間長]]の表現を並べて、 [CODE[[[/]]]] で区切ったものです。

[116] すべて[[基本書式]]、またはすべて[[拡張書式]]で構成されなければなりません [SRC[>>7 4.4.4.3, >>7 4.4.4.5, >>7 4.4.5]]。

** 時間長と終了による表現

[117] [[時間長]]と終了の[[日時]]の表現を並べて、 [CODE[[[/]]]] で区切ったものです。

[118] すべて[[基本書式]]、またはすべて[[拡張書式]]で構成されなければなりません [SRC[>>7 4.4.4.4, >>7 4.4.4.5, >>7 4.4.5]]。

* 反復時間間隔の表現

[125] [[反復時間間隔]]は、 [CODE[[[R]]]]、反復数、[CODE[[[/]]]]、[[時間間隔]]の順に並べて表現します。
反復数を省略した場合は、無制限の反復を表します。 [SRC[>>7 4.5]]

[FIG(railroad)[
= [CODE[[[R]]]]
= 数
= [CODE[[[/]]]]
= [[時間間隔]]
]FIG]

* 指示子

[57] [[日時表現]] (や[[日時書式表現]]) には[[ラテン文字]]がしばしば登場しますが、
これは[RUBYB[[[指示子]]]@en[designators]] [SRC[>>7 3.4.3]] と呼ばれています。

;; [148] [CODE[[[P]]]],[CODE[[[R]]]], [CODE[[[T]]]], [CODE[[[W]]]], [CODE[[[Z]]]]
が使われています [SRC[>>7 3.4.3]]。

[58] 更に[[時間]]の表現では、
[CODE[[[Y]]]], [CODE[[[M]]]], [CODE[[[W]]]], [CODE[[[D]]]], [CODE[[[H]]]], [CODE[[[S]]]]
が[[指示子]]として使われます [SRC[>>7 3.4.3]]。

;; [149] [CODE[[[M]]]] は[[月]]としても[[日]]としても使われます。

;; [59] [CODE[[[Y]]]], [CODE[[[M]]]], [CODE[[[D]]]] は[[日時書式表現]] (>>54) では違う意味になっています。

[134] [[JIS X 0301]] の拡張では、 
[CODE[M]]、[CODE[明]]など (>>172)
を[[元号]]を表す記号として使っています [SRC[>>27 5.1.3]]。

;; [138] [[ラテン文字]]と[[漢字]]の使い分けは、定義されていません。

* 先導0

[65] [[時刻]]要素で長さが決まっている場合には、必要なら[[先導0]]を用いなければなりません
[SRC[>>7 3.6]]。

[71] 可変長の部分では[[先導0]]は禁止されていないようです。

[163] [[先導0]]によって解釈が曖昧となることもあります。

[EG[
[164] 例えば25[[世紀]]を表す [CODE[25]] の[[展開表現]]である [CODE[+0025]] は、
25[[年]]を表す [CODE[0025]] の[[展開表現]]である [CODE[+0025]] と区別できません。
]EG]

* 文字と記号

[150] [[日時書式表現]]における [CODE[[[±]]]] (>>55)、 [CODE[[[/]]]] の代替の[[ダブルハイフン]] (>>98)、
特殊な扱いである[[ハイフン]]と[[マイナス]] (>>49)、 [[JIS X 0301]] による拡張である[[元号]] (>>134)
という多くの例外を除き、 [[ISO 8601]] の表現で用いられる[[文字]]は、 [[ISO/IEC 646]] や
[[ASCII]] で表現できます。

[52] [[日時表現]]では、[[大文字]]が使えない場合、[[小文字]]を使って構いません。
[SRC[>>7 3.4.1 NOTE 1]]

[HISTORY[
[380] 
[[ISO 8601]] の前身の1つ [[ISO 3307]] は、
[CODE[Z]] がない[[系]]では [CODE[z]] とする[RUBYB[べき][should]]としていました。
[SRC[>>376]]
]HISTORY]

;; [60] [[日時書式表現]]では[[大文字]]と[[小文字]]の違いによって意味が変わることがあります。

[53] [RUBYB[[[空白]]]@en[space]]は、明示的に認められた場合を除き、使ってはなりません。
[SRC[>>7 3.4.1]] ただし [[ISO 8601]] で明示的に認めている箇所はありません。

;; [370] >>345 も参照。

[63] [CODE[[[:]]]] は、[[時]]、[[分]]、[[秒]]の区切りに使います [SRC[>>7 3.4.4]]。

[HISTORY[
[140] [[ISO 8601:2000]] では [CODE[#]] も定義されています [SRC[[[ISO 8601:2000]] 4.5]] が、例示にあるだけで、
実際には利用されていません。[[反復時間間隔]]において何度目の反復であるかを識別する際の区切子として使うことが想定されていたようです。
[[ISO 8601:2004]] には含まれていません。
]HISTORY]

** ハイフンとマイナス

[61] [[マイナス]]は、[[日時書式表現]]の [CODE[[[±]]]] に相当する[[日時表現]]の部分で使って、
[[負数]]を表します。

[62] [[ハイフン]]は、[[年]]、[[月]]、[[週]]、[[日]]の間の区切りとして使います [SRC[>>7 3.4.4]]。

[49] [[ハイフン]]や[[マイナス]]は、 [[ISO/IEC 646]] を元にした[[文字レパートリ]]にあっては、
[CODE(charname)@en[[[HYPHEN-MINUS]]]] を用います。 [SRC[>>7 3.4.1]]

;; [50] [[ISO/IEC 10646]] や [[Unicode]] がそのような[[文字レパートリ]]と言えるのかは不明です...

[HISTORY[

[345] 
[[ISO 2014]]
と
[[ISO 2711]]
は[[ハイフン]]または[[間隔]]を認めていました。
[SRC[>>339, >>371]]

]HISTORY]

** 小数点

[77] [[小数点]]は[[時]]、[[分]]、[[秒]]の[[整数部]]と[[小数部]]を分けるために使います。
値が1に満たない時は[[整数部]]を 0 や 00 にしなければなりません。
[[小数点]]がある時は[[小数部]]は1桁以上必要です。 [SRC[>>7 4.2.2.4, >>7 4.4.3.2]]

[78] [[小数点]]は [CODE[[[,]]]] または [CODE[.][FULL STOP]] を用いることができます。
[CODE[[[,]]]] が[RUBYB[より好ましい]@en[preferred]]とされています。 [SRC[>>7 4.2.2.4, >>7 4.4.3.2]]

[HISTORY[

[379] 
[[ISO 8601]] の前身の1つ [[ISO 3307]] は、
[[ISO 31/0]] を引いて、
[[小数点]]は [CODE[,]] で[[英語]]では [CODE[.][FULL STOP]]
でも良いとしていました。
[SRC[>>376]]

]HISTORY]

[79] [[ISO 8601]] の[[日時書式表現]]や例示の[[日時表現]]はすべて [CODE[[[,]]]]
に統一されています。

[80] しかし [[XML Schemaの日付形式]]や[[HTMLの日付形式]]など主要なプロファイルはすべて
[CODE[.][FULL STOP]] を採用しています。

[139] [[JIS X 0301]] によって拡張された[[元号]]による[[日付]]の表現では、
[[ピリオド]] [SRC[>>27 5.1.3]] を用いています。これは [CODE[[[,]]]] ではなく、
[CODE[.][FULL STOP]] でなければなりません。

** 斜線

[64] [CODE[[[/]]]] は、[[time interval]] や [[recurring time interval]] の区切りに使います
[SRC[>>7 3.4.4, >>7 4.4.2 a)]]。

[98] [[応用分野]]によっては、 [CODE[[[/]]]] のかわりに[[二重ハイフン]]を使うことがあります
[SRC[>>7 4.4.2 NOTE]]。

;; [99] 「使うことがある」というのが、[[情報交換の当事者間の合意]]によって代用しても良いということなのか、
どういう意味なのか、はっきりしません。

** [CODE[T]]

[HISTORY[
[391] 
[[ISO 8601]] の前身の1つ [[ISO 3307]] は、
[[ISO/R 2014]] と組合せた[[日時]]の表現について、
区切子なしで連結できるものとし、
区切子が必要な場合は[[ハイフン]]または[[間隔]]を使えるとしていました。
[SRC[>>376]]

]HISTORY]

** [CODE[W]]

[367] 
[[週番号]]の前には [DFN[[CODE[W]]]] を書きます (>>73)。

[368] 
[[ISO 8601]] の前身の1つ [[ISO 2015]] は、
[[週番号]]の前に、[[週番号]]であることを明示する記号を書けるとしていました。
その表現は[[言語][自然言語]]によるとしながらも、
[CODE[W 01]] や [CODE[W 1]]
のように
[CODE[W ]] (week)
を使った例が示されていました。
[SRC[>>346]]

[366] 
[[国連]]版規格の [CODE[W]] の表記が揺れている
(>>329) 
のは、これと関係しているのかもしれません。

[369] 
[[ISO 8601]] はこのような[[間隔]]の挿入を認めていません
(>>53)。

* プロファイルと変種

[66] [[ISO 8601]] は[[日時表現]]や[[日時書式表現]]について、多くのバリエーションを定義していますし、
[[情報交換の当事者間の合意]]によって様々なオプションを採用できるとしています。
そのため様々な[DFN[ISO 8601のプロファイル]]が存在しています。

[68] [[情報交換の当事者間の合意]]によって何らかの表現を採用する場合、
他の表現が曖昧無く区別できるように注意する必要があります [SRC[>>7 3.7]]。

[151] 不思議なことに全体としての[[適合性]]の規定がありませんが、明らかに、
仕様上認められ得るすべての表現を生成したり、理解したりすることは求められておらず、
応用分野と当事者間の合意によって必要な範囲の構文に対応するべきであると解するのが妥当でしょう。

;; [152] 実際、[[情報交換の当事者間の合意]]によって認められる構文の採用の仕方によっては、
何を意味するか曖昧性が生じてしまうことがありますから、
無条件に任意の入力を受け付けるような実装は作れません。

[153] [[プログラミング言語]]、[[プロトコル]]その他各種の[[応用分野]]において、
[[ISO 8601]] の一部機能を選択したり、それを元に拡張したりしたものが存在します。
その粒度は様々で、自由度が高いものもあれば、一意に表現が定まるようなものもあります。

[154] [[ISO 8601]] を参照して定義されているものもあれば、完全に独自に互換な表現を定義しているものもあります。

[155] [[ISO 8601]] はそのような[[プロファイル]]の適合性を定義していませんから、
どれだけ制限や改変を加えても [[ISO 8601]] に適合していると主張できるのかははっきりしません。

[EG[
[156] 例えば [[RFC 3339の日付形式]]は [CODE[[[T]]]] や [CODE[[[Z]]]] を[[小文字]]でも良いとしていますが、
[[ISO 8601]] では >>52 の通り[[小文字]]による代用こそ認められていますが、
混在させると [[ISO 8601]] に適合しないかもしれません。

[157] [CODE[[[xs:dateTime]]]] では5桁以上の[[年]]を認めていますが、その前に [CODE[[[+]]]]
を書くことができませんから、[[完全表現]]でも[[展開表現]]でもありません。
[[ISO 8601]] に適合しない拡張ということになります。

[158] [CODE[[[xs:gYear]]]] は[[年]]と[[時差]]を組み合わせていますが、 [[ISO 8601]]
ではこのような組み合わせ方は定義されていません。
]EG]

[212] 困ったことに、 [[ISO 8601]] のうちの一部の機能のみを採用したものを
「[[ISO 8601]] 形式」のように呼ぶ人が少なくありません。
実際に [[ISO 8601]] のどの一部を採用するかはものにより異なっていますし、
そのようないい加減な文書はまともに説明していないので、
文脈や例示、実装状況などから何を表しているか推測するしかありません。

** 主要プロファイルの比較

[25] 主要なプロファイルの違いは次のようになっています。

[FIG(table)[
:x:
:年のみ                      :年のみ
:年月のみ                    :年月のみ
:年月日のみ                  :年月日のみ
:負の年                      :負の年
:0年                         :0年
:5桁以上の年                 :5桁以上の年
:日時区切り                  :日時区切り
:24時                        :24時
:秒の省略                    :秒の省略
:秒の小数部                  :秒の小数部
:[[閏秒]]                    :[[閏秒]]
:[[時間帯]]                  :[[時間帯]]
:[[UTC]]                     :[[UTC]]
:[[時間帯]]の[[時]]の範囲    :[[時間帯]]の[[時]]の範囲
:-0000                  :[[-00:00]]

:x:[[HTMLの日時形式]]
:年のみ                      :○
:年月のみ                    :○
:年月日のみ                  :○
:負の年                      :×
:0年                         :×
:5桁以上の年                 :○
:日時区切り                  :[CODE[T]] / [CODE[[[U+0020]]]]
:24時                        :×
:秒の省略                    :○
:秒の小数部                  :指定可
:[[閏秒]]                    :なし
:[[時間帯]]                  :時刻ありなら指定可
:[[UTC]]                     :[CODE[Z]]
:[[時間帯]]の[[時]]の範囲    :0-23
:-0000                  :禁止

:x:[[XML Schemaの日時形式]] (1.0)
:年のみ                      :○
:年月のみ                    :○
:年月日のみ                  :○
:負の年                      :[[紀元前]]
:0年                         :×
:5桁以上の年                 :[[先導0]]禁止
:日時区切り                  :[CODE[T]]
:24時                        :○
:秒の省略                    :×
:秒の小数部                  :指定可
:[[閏秒]]                    :なし
:[[時間帯]]                  :指定可
:[[UTC]]                     :[CODE[Z]]
:[[時間帯]]の[[時]]の範囲    :0-14
:-0000                  :特記なし

:x:[[XML Schemaの日時形式]] (1.1)
:年のみ                      :○
:年月のみ                    :○
:年月日のみ                  :○
:負の年                      :○
:0年                         :○
:5桁以上の年                 :[[先導0]]禁止
:日時区切り                  :[CODE[T]]
:24時                        :○
:秒の省略                    :×
:秒の小数部                  :指定可
:[[閏秒]]                    :なし
:[[時間帯]]                  :指定可
:[[UTC]]                     :[CODE[Z]]
:[[時間帯]]の[[時]]の範囲    :0-14
:-0000                  :特記なし

:x:[[RFC 3339の日付形式]]
:年のみ                      :×
:年月のみ                    :×
:年月日のみ                  :×
:負の年                      :×
:0年                         :○
:5桁以上の年                 :×
:日時区切り                  :[CODE[T]] / [CODE[t]] / 任意
:24時                        :×
:秒の省略                    :×
:秒の小数部                  :指定可
:[[閏秒]]                    :60まで
:[[時間帯]]                  :必須
:[[UTC]]                     :[CODE[Z]] / [CODE[z]]
:[[時間帯]]の[[時]]の範囲    :0-23
:-0000                  :「不明」

:x:[[W3C-DTF]]
:年のみ                      :○
:年月のみ                    :○
:年月日のみ                  :○
:負の年                      :×
:0年                         :○
:5桁以上の年                 :×
:日時区切り                  :[CODE[T]]
:24時                        :×
:秒の省略                    :○
:秒の小数部                  :指定可
:[[閏秒]]                    :なし
:[[時間帯]]                  :時刻ありなら必須
:[[UTC]]                     :[CODE[Z]]
:[[時間帯]]の[[時]]の範囲    :記載なし
:-0000                  :特記なし
]FIG]

;; 詳細はそれぞれの項を参照。

** プロファイルや変種の例

[9]
[[RFC 3339の日付形式]]は、特定の日時を表す[[部分集合]]で、
新しい [[IETF]] の技術ではこれを採用することが推奨されています。

[10] [[XML Schema]] の仕様書第2部ではいろいろな基本的な[[データ型]]を規定していますが、
その中には RFC 3339 の日付形式に極めてよく似たものを含め、
いくつかの日付や時刻や時間の表現のための形式が定義されています。

[23] [[HTMLの日付形式]]のいくつかは、 [[ISO 8601]] をもとに定義されています。

[24] [[JavaScriptの日付形式]]には、 [[ISO 8601の日付形式]]の[[プロファイル]]が含まれています。

[11]
[[W3C]] [[Member Submission]] [[Note]] である [CITE[Date and Time Formats]]
は、
[[RFC 3339の日付形式]]を同じものや、それよりも精度が低いもの
[WEAK[(時刻を省略したものなど)]] など数種類の形式
(通称 [[W3C-DTF]]) を提案しています。
[[HTML 4]] などが採用していますが、 XML Schema 
データ型の登場により現在では時代遅れであると考えられています。

[4] [[RFC 2326の時刻形式]]の1つ、 [CODE(ABNF)[[[npt-range]]]] は、 
ISO 8601 に従った書式で、演奏時間範囲を指定するのに使われます。

[5] [[PICSの日付形式]]は2種類あり、そのうちの新しい方は
ISO 8601 に基づく書式です。 XML Schema のデータ型のものと似ていますが、
微妙に異なります。

[14]
[CITE@en-us[XLIFF 1.1 Specification]] ([CODE[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] [CITE[XLIFF 1.2 Specification]] ([TIME[2008-02-05 00:30:42 +09:00]] 版) <http://docs.oasis-open.org/xliff/v1.2/os/xliff-core.html#date>

[15]
[CITE[Global Information Management eXchange Metrics Volume 1.0 Specification]] ([CODE[2007-02-24 17:44:10 +09:00]] 版) <http://www.lisa.org/standards/gmx/GMX-V.html#Attr_date>

>>14 の関連規格だけど日付形式は違う
([[名無しさん]])

[16]
[CITE@en-us[TMX Specification]] ([CODE[2007-02-24 17:51:20 +09:00]] 版) <http://www.lisa.org/standards/tmx/tmx.html#changedate>
([[名無しさん]])

[17]
[CITE@en-us[TMX Specification]] ([CODE[2007-02-24 17:51:20 +09:00]] 版) <http://www.lisa.org/standards/tmx/tmx.html#creationdate>
([[名無しさん]])

[18]
[CITE@en-us[TMX Specification]] ([CODE[2007-02-24 17:51:20 +09:00]] 版) <http://www.lisa.org/standards/tmx/tmx.html#lastusagedate>
([[名無しさん]])

[19]
[CITE[XML Text Memory Namespace 1.0 Specification]] ([CODE[2007-02-24 17:56:51 +09:00]] 版) <http://www.lisa.org/standards/xmltm/xml-tm.html#Attr_date>
([[名無しさん]])


[20]
[CITE@en[TermBase eXchange Link (TBX Link) Specification]] ([TIME[2007-02-24 18:05:26 +09:00]] 版) <http://www.lisa.org/standards/tbxlink/tbxlink.html#Attr_date>

- [[HTMLの時間形式]]
- [CODE(XML)@en[[[xs:duration]]]]

[12] [[PICSの日付形式]]は2種類あり、そのうちの古い方は
ISO 8601 に基づいた書式であることを意図していましたが、
日付の部分の区切子に誤って [CODE(char)[[[HYPHEN-MINUS]]]]
ではなく [CODE(char)[[[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]] 形式と称して、 [CODE[[VAR[YYYY]][VAR[MM]][VAR[DD]]T[VAR[hh]][VAR[mm]][VAR[ss]]Z]]
のような記号を使わない形式を用いています [SRC[>>190]]。

[195] [[[CODE[clock]] (RTSP)]]

[196] [[NPT]]

[REFS[
- [190] [CITE[Signature Calculations for the Authorization Header: Transferring Payload in a Single Chunk (AWS Signature Version 4) - Amazon Simple Storage Service]] ([TIME[2017-02-11 04:52:51 +09:00]]) <http://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-header-based-auth.html>
]REFS]

[187] [[XMPPの日時形式]]も、 [[ISO 8601]] から派生したものです。


[358] [CITE[Modified [[ISO8601]] - ACP_Proposal_Modified_ISO8601.pdf]], [TIME[2013-04-11T18:36:39.000Z]], [TIME[2022-12-14T14:21:35.920Z]] <https://fhiso.org/wp-content/uploads/gravity_forms/1-f519698841e98c110faf9a3c2f50cd0e/2013/03/ACP_Proposal_Modified_ISO8601.pdf>

[CODE[[VAR[yyyy]]-Q[VAR[q]]]]
の 
[VAR[q]] 
を [ [N[1]], [N[4]] ]
として[[四半期]]を表すことを提唱し、 [[ISO]] への提案を求めています。


[405] 
[[MongoDB Extended JSONにおける日時]]

[408] [[Table Schemaの日時]]

*** RFC 3339 の ISO 8601 構文

[203] [[RFC 3339]] は、[[RFC 3339の日時形式]]を規定するだけでなく、
[[ISO 8601:1988]] の [[ABNF]] 構文も[[参考]]として示しています [SRC[>>202]]。

[204] [[RFC 3339]] は [[ISO 8601]] が曖昧であると指摘して、
次のように解釈しています [SRC[>>202]]。

- [205] [[基本書式]]と[[拡張書式]]の混合が認められるか不明なので、
認めることとする。
- [206] [[時]]が [N[24]] で[[分]]と[[秒]]が [N[0]] 以外となることが認められるか不明なので、
[[分]]と[[秒]]に関わらず認めることとする。
- [207] [[月]]の[[日の数]]の制約を適用する。
- [208] [CODE[T]] が省略できる場合があるとされているが、
曖昧性を除去するため、必須とする。
- [209] [[小数部]]があって[[整数部]]が [N[0]] のとき、 [CODE[0]]
を省略できないと本文にあり、省略した例示があるが、
本文に従い省略できないこととする。

[211] こうした問題のいくつかは、 [[ISO 8601]] の改訂で解消しています。

[REFS[
- [202] [CITE@en[RFC 3339 - Date and Time on the Internet: Timestamps]] ([TIME[2017-05-07 16:17:18 +09:00]]) <https://tools.ietf.org/html/rfc3339#appendix-A>
- [210] [CITE[RFC Errata Report » RFC Editor]] ([TIME[2017-05-17 21:31:41 +09:00]]) <https://www.rfc-editor.org/errata_search.php?rfc=3339>
]REFS]

** その他の応用

[FIG(short list)[ [241] [[ISO 8601]] の応用
- [[Date-and-Time][ISO/IEC 11404の日時形式]]
- [[Time][SensorMLの日時形式]]
- [[GMLの日時形式]]
- [CODE[iso-8601-date]]
- [[Coverage Element]]
- [[ODETTEの日時形式]]
- [CODE[:server-time]]
- [[XFAの日時形式]]
- [[P3Pの日時形式]]
- [CODE[tag:]]
- [[CEA-2014-B]]
- [[WMSの日時形式]]

]FIG]

[243] [DFN[ISO 19103の日時形式]]は、
[DFN[[CODE[Date][ISO 19103 Date]]]],
[DFN[[CODE[Time][ISO 19103 Time]]]],
[DFN[[CODE[DateTime][ISO 19103 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
[CODE[DATE]]
[[要素]]では、
[L[[B[ISO 8601]]:1988の方式]], [L[mm-dd-yy]], [L[mm/dd/yy]], [L[dd-mm-yy]], [L[月日年]]
のいずれかの形式を使えるものとし、
他の形式にも拡張できるとしていました。

[271] 
[[DC]] の [[Date][dc:date]]
は
[[ISO 8601]]
のプロファイルを[[推奨]]していました。
[[JIS]] 版は
[[JIS X 0301]]
のプロファイルを[[推奨]]していました。
その具象構文の一種である
[[RSS 1.0]]
の
[CODE[dc:date]]
は、
[[W3C-DTF]] とすることを求めていました。
[SEE[ [CODE[dc:date]] ]]


[310] [CITE@en[RFC 767 - Structured format for transmission of multi-media documents]], [TIME[2021-02-14T20:19:32.000Z]], [TIME[2021-03-10T06:31:38.981Z]] <https://tools.ietf.org/html/rfc767#page-7>


[313] 
[DFN[STONの日時形式]]

[FIG(quote)[
[FIGCAPTION[
[314] 
[CITE@en[ston/ston-paper.md at master · svenvc/ston · GitHub]], [TIME[2021-09-26T01:37:11.000Z]] <https://github.com/svenvc/ston/blob/master/ston-paper.md#conventional-representations>
]FIGCAPTION]

>
-[B[Time]] a one element array with an ISO style HH:MM:SS string
-[B[Date]] a one element array with an ISO style YYYYMMDD string
-[B[DateAndTime]], [B[TimeStamp]] a one element array with an ISO style YYYY-MM-DDTHH:MM:SS.N+TZ.TZ string
]FIG]

[317] 
「ISO style」が何を意味するか明らかではありませんが、
[[ISO 8601]] 
のことだとすると、 [CODE[+TZ.TZ]] は構文が微妙に違っています。

[FIG(quote)[
[FIGCAPTION[
[315] 
[CITE@en[ston/ston-spec.md at master · svenvc/ston · GitHub]], [TIME[2021-09-26T01:40:55.000Z]] <https://github.com/svenvc/ston/blob/master/ston-spec.md#time>
]FIGCAPTION]

>
[B[Time]]
>
Simple time data is represented using a singleton list with a string in ISO style "HH:MM:SS.N" representation (with optional nanoseconds).
[PRE[
Time [ '20:28:41' ]
Time [ '20:28:41.063687' ]
]PRE]
>
[B[Date]]
>
The date object is represented using a singleton list with a string in ISO style "YYYY-MM-DD[+|-]hh:mm" representation (with timezone offset).
[PRE[
Date [ '2018-10-29+01:00' ]
]PRE]
>
[B[DateAndTime]]
>
The timestamp (date and time) object is represented using a singleton list with a string in ISO style "YYYY-MM-DDTHH:MM:SS.N[+|-]" representation (with timezone offset and optional nanoseconds).
[PRE[
DateAndTime [ '2018-10-29T20:30:35+00:00' ]
DateAndTime [ '2018-10-29T20:30:35.899433+01:00' ]
]PRE]

]FIG]

[316] 
こちらの 「ISO style」 は [[ISO 8601]] の形式。

[323] 
[[Sailthruの日時形式]]は [[ISO 8601]] に従うとドキュメントに書いていますが、
ドキュメントがそうでない例ばかり示しています。
[SEE[ [[Sailthruの日時形式]] ]]


[328] 
[[FITAの日時形式]]は[[日時]]の[[基本書式]]の独自の拡張と、
[[相対時刻]]記述のための拡張がなされています。

- [402] [CITE@en-nz[Date of birth data mandated standard - data.govt.nz]], [TIME[2022-12-19T11:19:54.000Z]] <https://www.data.govt.nz/toolkit/data-standards/mandated-standards-register/date-of-birth-standard/>
-- [403] [CITE[Date-of-birth-data-standard.pdf]], [TIME[2022-02-14T03:38:08.000Z]], [TIME[2022-12-19T11:20:18.063Z]] <https://www.data.govt.nz/assets/Uploads/Data-content-standards/Date-of-birth-data-standard.pdf>
-- [404] [CITE[Date-of-birth-data-content-standard-V3.3.pdf]], [TIME[2019-10-31T00:51:25.000Z]], [TIME[2022-12-19T11:20:26.713Z]] <https://www.data.govt.nz/assets/Uploads/Data-content-standards/Date-of-birth-data-content-standard-V3.3.pdf>


>YYYY-MM-DD (or YYYYMMDD)


[409] 
[[XMDF]]:

[410] Date形式

>[SNIP[]]JIS X 0301の表記方法に従う。[SNIP[]]"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よりも前の桁数は制限しない。

[413] >>412 これは [[ISO 8601]] ではない独自形式の[[時間長]]。

* 各国版

[234] 他の [[ISO]] の[[国際標準]]と同じように、
各国の[[国内規格]]ともなっています。

** 米国


[275] 
[[米国連邦政府]]の情報処理用標準規格
[DFN[FIPS 4]]
([DFN[Federal Information Processing Standard 4]])
[DFN[[CITE[Calendar Date]]]]
は、
[TIME[1968-11-01]]に制定され、
[TIME[1970-01-01]]に[[施行]]されました。
([[施行]]日以前でも[[当事者間の合意]]により実施可能とされました。)
[SRC[>>274]]

[276] 
次のように定めていました。
[SRC[>>274]]

- [277] [DFN[Calendar Date]]: 
[[グレゴリオ暦]]の [[Year]], [[Month]], [[Day]] の6桁
-- [279] [[Month]]: [CODE[01]] ([[January]]) - [CODE[12]] ([[December]])
-- [280] [[Day]]: [CODE[01]] - [CODE[31]]
- [281] [[Ordinal Day]] 表現:
[[グレゴリオ暦]]の [[Year]], [[Ordinal Day]]
-- [282] [[Ordinal Day]] ([[Ordinal Number]]): 
[CODE[001]] ([[January]] 1) - [CODE[365]]
- [283] [[Year]] は[[2桁][西暦2桁年号]]。
[[十年紀]]内しか使わないなら1桁、
[[世紀]]を超えて使うなら4桁としても良い。
- [284] [[Year]], [[Month]], [[Day]], [[Ordinal Day]]
は単体で使っても、組み合わせて使っても良い。
組み合わせるときは[[大エンディアン]]とする。

;; [291] [[グレゴリオ暦]]と明記されていましたが、
[[紀年法]]は明記されていませんでした。

[287] 
[DFN[ANSI X3.30-1971]]
は、
[TIME[西暦1971年][year:1971]]に制定されました。

[288] 
[DFN[ANSI X3.30-1985]]
は、
[TIME[1985-07-30]]に制定されました。
[[ANSI X3.30-1971]]
を置き換える改訂版でした。
[SRC[>>285]]

[289] 
[[ANSI X 3.30-1985]]
は実質的に 
[[FIPS PUB 4]]
と同内容でしたが、
規定はおおむね FIPS より洗練されていました。
次のように定めていました。
[SRC[>>285]]

- [290] [DFN[calendar date]]: 
[[year]],
[[month of year]],
[[day of month]]
をつなげたもの。
-- [295] [[Month]]: [CODE[01]] - [CODE[12]]
-- [296] [[Day]]: [CODE[01]] - [CODE[31]]
- [292] [DFN[ordinal date]]:
[[year]],
[[day of year]]
をつなげたもの。
[[グレゴリオ暦]]の [[Year]], [[Ordinal Day]]
-- [297] [[day of year]]: 
[CODE[001]] ([[January]] 1) - [CODE[365]]
- [278] [[year]] は4桁。
-- [293] [[応用]]依存で、上位2桁の [[century]], 下位2桁の [[year of century]]
のうち、 [[year of century]] を使っても良い。
-- [294] [[応用]]依存で、上位2桁の [[century]], 上から3桁目の [[decade]],
下位1桁の [[year of decade]]
のうち、 [[year of decade]] を使っても良い。
- [298] 
[[year]],
[[month of year]],
[[day of month]],
[[day of year]]
は単体で使っても、組み合わせて使っても良い。
組み合わせるときは[[大エンディアン]]とする。

;; [299] [[暦法]]も[[紀年法]]も明記されていませんでした。

[286] 
[DFN[FIPS PUB 4-1]]
は、
[TIME[1988-01-27]]に制定されました。
[[FIPS PUB 4]]
を置き換える改訂版でした。
[[ANSI X3.30-1985]]
をそのまま採用したものでした。
[SRC[>>285]]

;; [300] [[FIPS PUB 4-1]]
は関連規格として
[[FIPS PUB 58-1]], [[FIPS PUB 59]], 
[[ANSI X3.30-1985]], 
[[ANSI X3.43-1986]], [[ANSI X3.51-1975]], [[ISO 2014-1976]], [[ISO 2711-1973]], [[ISO 3307-1975]], [[ISO 4031-1978]]
を示していました。
[[ANSI X3.30-1985]]
以外は言及がなく関係は不明です。


[306] 
[[FIPS PUB 4-1]] の1991年のものとされる 
[[PDFファイル]]が公開されています。
その内容は
[[ISO 8601:1988]]
と
[[ISO 8601:1988/Cor.1:1991]]
でした。
手書きで
「Related to FIPS 4-1」
と書かれていました。
[SRC[>>305]]

;; [307] これ以上の詳細は不明で、また、以後の改正に関する記述 [SRC[>>302]]
には何も言及がありませんでした。

[301] 
[[FIPS PUB 4-1]]
に対して
Change Notice 1
が[TIME[1996-03-25]]に発行されました
[SRC[>>302]]。

[303] 
Federal Register Change Notice #2
が[TIME[1998-11-15]]に発行されました。
[[FIPS PUB 4-1]] および Change Notice 1
を置き換える改訂版で、
[DFN[FIPS PUB 4-2]]
[CITE[Representation of Calendar Date for Information Interchange]]
となりました。
[SRC[>>302]]

[304] 
Change notice 2 は [[FIPS PUB 4-1]] に編集上の訂正を加えたものとされますが、
[[2000年問題]]対策のため改正されたものだといいます。
[SRC[>>302]]



[327] 
関連: [[TOPS-10の日時形式]]

[REFS[
- [274] [CITE@en[[[FIPS PUB 4]] CALENDAR DATE]], [TIME[2021-01-16T08:47:16.000Z]] <http://everyspec.com/NIST/NIST-FIPS/FIPS_PUB_4_3450/>
- [285] [CITE[[[Federal Information Processing Standards]] Publication: representation for calendar date and ordinal date for information interchange - fipspub4-1.pdf]], [TIME[2017-12-04T13:22:02.000Z]], [TIME[2021-01-16T09:00:33.001Z]] <https://nvlpubs.nist.gov/nistpubs/Legacy/FIPS/fipspub4-1.pdf>
- [305] [CITE[[[Federal Information Processing Standards]] Publication: data elements and interchange formats - information interchange - representation of dates and times - fipspub4-1-1991.pdf]], [TIME[2017-12-04T13:12:05.000Z]], [TIME[2021-01-16T09:54:03.315Z]] <https://nvlpubs.nist.gov/nistpubs/Legacy/FIPS/fipspub4-1-1991.pdf>
- [302] [CITE[[[FIPS]] Announcements - fips-announcements.pdf]], [TIME[2019-05-21T01:10:05.000Z]], [TIME[2021-01-16T09:34:09.728Z]] <https://www.nist.gov/system/files/documents/2016/12/15/fips-announcements.pdf>
]REFS]


[318] 
[CITE[Federal Information Processing Standards Publication: for information systems - representations of local time of day for information interchange - fipspub58-1.pdf]], [TIME[2017-12-04T18:27:02.000Z]], [TIME[2022-03-23T03:34:39.116Z]] <https://nvlpubs.nist.gov/nistpubs/Legacy/FIPS/fipspub58-1.pdf>

** JIS X 0301

[39] [[ISO 8601]] の [[JIS]] 版が [DFN[JIS X 0301]] 
(旧 [DFN[JIS C 6262]]) です。

- [TIME[1970-04-01]] [[制定]]: [DFN[JIS C 6262-1970]] [CITE[日付の表示(コード)]]
- [TIME[1973-04-01]] [[確認]]
- [TIME[1976-04-01]] [[確認]]
- [TIME[1977-12-01]] [[改正]]: [DFN[JIS C 6262-1977]] [CITE[日付の表示(コード)]]
- [TIME[1982-12-01]] [[確認]]
- [TIME[1987-03-01]] [[被移行]]: [DFN[JIS X 0301-1977]] [CITE[日付の表示(コード)]]
- [TIME[1989-02-01]] [[確認]]
- [TIME[1992-03-01]] [[改正]]: [DFN[JIS X 0301-1992]]
- [TIME[1997-06-20]] [[確認]]
- [TIME[2002-08-20]] [[改正]]: [DFN[JIS X 0301:2002]]
[CITE[情報交換のためのデータ要素及び交換形式―日付及び時刻の表記]]
[CITE[Data elements and interchange formats -- Information interchange -- Representation of dates and times]]
([[MOD]] [[ISO 8601:2000]])
- [TIME[2008-10-01]] [[確認]]
- [TIME[2014-10-20]] [[確認]]

[326] 
[TIME[平成12(2000)年][2000]]の9月頃に正誤票が発行されたそうです。
[SEE[ [[元号一覧]] ]]


[HISTORY[
[220] かつては [[JIS C 6262]] は[[日付形式]]のみを定めていました。
[[時刻形式]]は別に [DFN[JIS X 0302]] ([DFN[JIS C 6263]]) がありました。

- [TIME[1970-04-01]] [[制定]]: [DFN[JIS C 6263-1970]] [CITE[時刻の表示(コード)]]
- ...
- [TIME[1977-12-01]] [[改正]]: [DFN[JIS C 6263-1977]] [CITE[時刻の表示(コード)]]
- ...
- [TIME[1987-03-01]] [[被移行]]: [DFN[JIS X 0302-1977]] [CITE[時刻の表示(コード)]]
- [TIME[1989-02-01]] [[確認]]
- [TIME[1992-03-01]] [[廃止]]

]HISTORY]

[40] [[JIS X 0301]] には [[ISO 8601]] の翻訳に[[元号]]を使った[[日付形式]]の規定を組み込んでおり、
[[国際規格]]との対応の程度は [[MOD]] とされています。

[228] 
「JIS X 0301 形式」
のような曖昧な言い方をする人がたまにいます。
「ISO 8601 形式」が曖昧なのと同様「JIS X 0301 形式」も曖昧です。
[[JIS X 0301]] 固有の元号を使う形式 (これ自体も複数あります。)
を指している人もいれば、
[[ISO 8601]] にある形式のいずれかを指している人もいます。


[EG[
[239] 
[[Ruby]] には [CODE[jisx0301]] メソッドがあり、
[[元号]]方式の一種に対応しているようです。
]EG]


[44] :2002 5.1.3 で、文字に [CODE[平]] とかを追加してるけど、 4.4 を修正してないのは初歩的なミス。 4.4 は 
[[JIS X 0201]] で規定する文字を使うといっているが、 [CODE[平]] とかは 0201 にはない。

[HISTORY[
[41] [TIME[2002-12-14 15:38]] JIS X 0301 は 2002年に新版が出たらしいのですが、 [[JISC]] Web site からはまだ入手出来ないどころか、旧版も見れない状態が続いています。

[42] [TIME[2003-04-30 12:33]] >>41 今は :2002 が入手できるようです。
]HISTORY]

[172] [[元号]]を使う場合、次の接頭辞の後2桁の数字で年号を表記します。
[FIG(list short)[
- [[明][明治]]
- [[大][大正]]
- [[昭][昭和]]
- [[平][平成]]
- [[令][令和]]
- [[M][明治]]
- [[T][大正]]
- [[S][昭和]]
- [[H][平成]]
- [[R][令和]]
]FIG]

[SEE[ [[元号コード]] ]]

[173] また[[元号]]を使う場合は年月日の区切りに [CODE[-]] ではなく [CODE[.][FULL STOP]]
を使います。

[221] [[元号]]による日付の構文では、
[[元号]]を記述するものを[[拡張形式]]、
[[元号]]を省略して年月日のみとするものを[[基本形式]]としています。
どちらも区切りの [CODE[.][U+002E]] は必要です。

[222] [[ISO 8601]] は区切り記号がないものを[[基本形式]]、
あるものを[[拡張形式]]と呼んでおり、
[[JIS X 0301]] が拡張した[[元号]]方式だけ一貫していません。
杜撰な拡張です。

[223] 「必要によっては」[[元号]]を示してもよいと規定されていますが、
[[元号]]なしに[[年]]のみを示すのでは[[年]]が特定できません。
[[元号]]を明示するのが基本形であるべきで、
応用分野によって[[元号]]が文脈から明確であって従来の慣用などに従い[[元号]]を省略することが好ましい場面でのみ省略を許すべきでした。
[[情報交換]]目的の[[規格]]であるにも関わらず、
[[情報交換]]における[[標準化]]の意義を理解していない者が開発した[[規格]]としか思えません。

[174] 附属書1 ([[参考]]) には、[[明治6年の改暦][明治の改暦]]より前は[[適用範囲外]]で、
「換算には特別な注意が必要」との注記があります。
ただしこの表には「M01.01.01」が「1868-01-25」に対応するなど[[旧暦]]と[[グレゴリオ暦]]の対応関係が[[明治]]初年から明治5年までも示されています。
[[規定]]本体にはそのような規定はありませんが。

[181] 年は2桁とされているので、最新元号の100年とそれ以降も表せないことになります。

[225] [[改元]]の前後の正当な表記ではない[[元号]]と[[年月日]]の組み合わせをどう扱うか
(認められるのかどうか、受信した時どう解釈するべきか)
には一切言及がありません。もっとも [[ISO 8601]] 
自体が値域外の値を得た時どう解釈するべきかに言及していません。
附属書1 ([[参考]]) には[[元号]]の最初と最後の[[日付]]の一覧がありますが、
あくまで[[参考]]であり、[[元号]]を使った[[日付]]表現の[[規定]]との関係性は不明です。
[[元号]]の日付の慣習的解釈に従うなら、
[[改元]]を過ぎた旧元号による記述も適当に読み替えて受け入れるべきです。
[SEE[ [[改元]] ]]

[184] [[改元]]があった場合、[[改正]]されるものと思われます。

[224] 
[[平成]]は [TIME[1992-03-01]] の[[改正]]で追加されたとみられます。
[TIME[1989-01-08]] の[[改元]]から3年も [[JISC]] は何をしていたのでしょうか。

[226] 
こんな具合ですから、世間でほとんど相手にされていないのも当然でしょう。
([[JIS X 0301]] の規定する[[元号]]を使った[[日付]]と同じ構文のものは昔からよく使われていますが、
「[[JIS X 0301]] の規定するもの」として使われていることは稀です。)
官公庁システムなどが [[JIS X 0301]] 方式を使うと定めている可能性はあります
(が[[元号コード]]方式など他の方式の方が公表されている仕様書ではよくみられます)。

[227] 
主要な実装で [[JIS X 0301]] の[[元号]]の[[日付]]に対応しているのは [[Ruby]]
くらいでしょうか。その [[Ruby]] も [[JIS X 0301]]
の[[改正]]を待たずに[[令和]]に対応したようです。
[SEE[ [[令和改元]] ]]

[230] 
[TIME[令和元年5月20日][2019-05-20]]、
[[日本政府]]は[[改正]]して [DFN[JIS X 0301:2019]]
としました [SRC[>>231]]。改正版は既存の [[JIS X 0301:2002]]
をそのまま残し、新たに
[DFN[JIS X 0301:2002/AMENDMENT 1:2019]]
[DFN[[CITE[情報交換のためのデータ要素及び交換形式―日付及び時刻の表記(追補1)]]]]
([DFN[[CITE[Data elements and interchange formats -- Information interchange -- Representation of dates and times (Amendment 1)]]]])
を追加する形とされました。

[232] Amd.1:2019 は、既存の元号に関する規定に「令」と「R」
を追加するという最低限の変更のみ行うものでした。

[233] [[令和改元]]では比較的迅速に対応されたといえます。
技術的な変更がなく法令改正への対応のみの[[形式改正]]であるとし、
原案委員会を設ける通常の手続きではなく[[経済産業省]]が直接原案を作成し
[TIME[4月][2019-04]]の [[JISC]] 標準第2部会に諮り、承認されました [SRC[>>235]]。

[238] 月1回の定例スケジュールで新元号発表後最短で改正されたようです。
理論上改元後20日間は新元号を使えない空白期が生じたことになりますが、
ほぼ自明であり特別な手続きを執る必要はないと判断されたのでしょう。
(実際その通りであり、しかも閲覧も面倒な [[JIS]] の改正を急ぐよりも
[[Webサイト]]の Q&A [SRC[>>237]] をタイムリーに更新することにリソースを集中させたのは正しい判断だったと思われます。
正式な [[JIS]] よりも公的だけど非正式であろう Web ページの記述の方が有用だというのは、
[[JIS]] の存在意義を疑わせるものではありますが...)

[268] なお、 [[JIS]] [[規格票]]内での[[日付]]表記については、
[[現代日本の紀年法]]参照。

[REFS[

[FIG(quote)[
[FIGCAPTION[
[237] [CITE@ja[改元に伴う情報システムの改修等を進めていく上でよくご質問いただく事項について (METI/経済産業省)]]
([TIME[2019-04-12 17:26:09 +09:00]])
<https://www.meti.go.jp/policy/it_policy/kaigen/faq.html>
]FIGCAPTION]

> JIS X 0301(情報交換のためのデータ要素及び交換形式-日付及び時刻の表記)については、改元に伴い、「令和」の表記を定めるなどの改正作業を進めております。

]FIG]

- [235] [CITE@ja[日本工業標準調査会:JISCの紹介-日本工業標準調査会 会議配布資料]] ([TIME[2019-05-21 11:33:32 +09:00]]) <https://www.jisc.go.jp/app/jis/general/GnrMeetingDistributedDocumentMenu?show>
「標準第二部会」→「H31.04.23 	第25回(書)」の「議事録」、「配布資料」→
「資料5 改正 X0301 形式改正として付議された日本工業規格案について(審議)」
- [236] [CITE@ja[AB1QQさんのツイート: "JIS X 0301、4月22日付け作業計画にいきなり作業段階4(JIS原案に対する意見受付を終了している)で掲載。いつの間に意見募集してたんだ? https://t.co/JWYnkFa3SU 4月22日JISC審議済み。5月20日官報公示予定。 https://t.co/A3UMMxlIbo"]] ([TIME[2019-05-21 11:48:32 +09:00]]) <https://twitter.com/AB1QQ/status/1123724362585182210>
- [240] [CITE@ja[令和元年5月20日(本紙 第10号) ]] ([TIME[2019-05-22 11:13:18 +09:00]]) <https://kanpou.npb.go.jp/20190520/20190520h00010/20190520h000100011f.html>
- [231] [CITE@ja[日本工業規格(JIS)を制定・改正しました(2019年5月分) (METI/経済産業省)]] ([TIME[2019-05-20 16:02:10 +09:00]]) <https://www.meti.go.jp/press/2019/05/20190520006/20190520006.html>
]REFS]

** CNS 7648

[169] [[中華民国]]の [[CNS]] では、
[DFN[[[CNS 7648]]]] ([DFN[CNS X 0003]])
が [[ISO 8601]] に対応します。

- [253] 70年7月20日 [[公布]]
- [254] 78年7月15日 第一次修訂 
- [255] [TIME[81年10月24日][1992-10-24]] 第二次修訂 (1992) : [[ISO 8601]] TC1:1991 相当
-- [256] 81年11月 印行
-- [258] 94年10月 印行
-- [257] 101年11月 [[確認]]
- [263] 104年8月20日 第三次修訂 : [[ISO 8601:2004]] 相当
-- [264] 104年8月 印行

([[日付]]は[[民国紀元]])

[170] 巷では [[CNS 7648]] は[[民国紀元]]の表現についても規定しているとされていて、
[CODE[R.O.C.74-04-12]] のように [CODE[R.O.C.]] を使って表記するとされています。

[171] 民国81年改正版の附録A ([[参考]]、12ページ) の例示には確かにそのような表記例が示されていました。
しかしなぜか肝心の本文にはまったく言及がありませんでした。

[265] 民国104年改正版にはそのような例示すらありませんでした。

[266] 当初版では[[民国紀元]]を使った構文も規定されていたのでしょうか。

[178] [[日本語]]版 [[Wikipedia]] は [[CNS 7648]] で[[民国紀元]]が
「西暦と共に標準化されている」 [SRC[>>177]] と述べ、
[[CNS]] が[[民国紀元]]を定義していると誤解を招くような説明をしています。
[[中文]]版と[[英語]]版は [[CNS]] に[[民国紀元]]による表記方法があると述べるにとどまっています。
ただし[[英語]]版 [[Wikipedia]] は [CODE[ROC 93-05-03]] という例を示しています [SRC[>>179]]。
[[中文]]版 [[Wikipedia]] の例は [CODE[R.O.C.102-01-01]] [SRC[>>180]]、
[[日本語]]版 [[Wikipedia]] の例は [CODE[R.O.C.90-09-11]] [SRC[>>177]] で、
「.」が入っていて [CODE[[[U+0020]]]] は入りません。

[267] なお、 [[CNS]] [[規格票]]内の[[日付]]表記については、
[[CNS]] 参照。

[REFS[
- [180] [CITE@zh[民國紀年 - 维基百科,自由的百科全书]] ([TIME[2016-02-01 12:46:19 +09:00]] 版) <https://zh.wikipedia.org/wiki/%E6%B0%91%E5%9C%8B%E7%B4%80%E5%B9%B4>
- [177] [CITE@ja[民国紀元 - Wikipedia]] ([TIME[2016-01-05 10:30:35 +09:00]] 版) <https://ja.wikipedia.org/wiki/%E6%B0%91%E5%9B%BD%E7%B4%80%E5%85%83>
- [179] [CITE@en[Minguo calendar - Wikipedia, the free encyclopedia]] ([TIME[2016-02-04 21:50:05 +09:00]] 版) <https://en.wikipedia.org/wiki/Minguo_calendar>
]REFS]

** TIS 1111

[183] 
[[タイ]]では [DFN[TIS 1111:2535]] [SRC[>>217]] (1992) 
が [[ISO 8601]] に相当しています。
[DFN[TIS 1111の日時形式]]は、
当時の [[ISO 8601の日時形式]]とほぼ同じものですが、
[[西暦]]4桁または2桁[[年号]]のかわりに[[仏暦]]4桁または2桁[[年号]]を採用しています。

[REFS[
- [217] [CITE[การแสดงวันที่และเวลา(Standard For Representation of Data and Times)]] ([TIME[2016-05-13 11:28:49 +09:00]]) <https://www.nectec.or.th/it-standards/std1111/std1111.html>
]REFS]

** 国連

- [329] [CITE@en[Recommendation 7]], [TIME[2013-11-08T10:44:04.000Z]], [TIME[2022-12-13T13:26:49.812Z]] <https://tfig.unece.org/contents/recommendation-7.htm>
-- [330] [CITE[Untitled-4 - rec07_1988_inf108.pdf]], [TIME[2021-12-08T12:10:13.000Z]], [TIME[2022-12-13T13:27:03.499Z]] <https://unece.org/fileadmin/DAM/cefact/recommendations/rec07/rec07_1988_inf108.pdf>

[331] [TIME[西暦1988年][1988]]の第2次規格です [SRC[>>330]]。
開発グループは [[ISO 8601]] の制定作業に参加すると共に、
制定に伴い改正しました [SRC[>>330]]。 

[332] [TIME[西暦1975年9月][1975-09]]の第1次規格は
[[ISO 2014]], [[ISO 2015]], [[ISO 2711]], [[ISO 3307]]
に基づいていました。 [SRC[>>330]]
(いずれも [[ISO 8601]] の前世代に当たり、 [[ISO 8601]] 制定によって廃止された規格。)

[333] 
現在公開中の第2次規格は、 [[ISO 8601:1988]] と技術的に同等と思われます。
(要検証)


[334] 
[[PDF]] で公開されていますが、週を表す「W」の両側に[[スペース]]が入っているのが気になります。
(「T」などには無いのに。)



[335] [CITE[Wayback Machine]], [TIME[2022-12-13T14:20:33.000Z]] <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」が[[半角]]なところと[[全角]]なところがあり、
「+」
と
「-」
は[[符号]]となるとき[[全角]]なのに、区切子の「-」は[[半角]]です。



- [351] [CITE[Microsoft Word - H10-“‚“Û”æ‹øWG-WebReport-3.doc - J0004071.pdf]], [TIME[2002-08-06T07:51:54.000Z]], [TIME[2022-12-14T13:57:06.289Z]] <https://www.jipdec.or.jp/archives/publications/J0004071.pdf#page=89>

[352] >>351 は翻訳ではないものの、
主要部分の和訳に近い。
[TIME[1975年9月][1975-09]]採択としか書かれていませんが、
[[ISO 8601]]
に言及されているので、
第2次規格を知っているはずです。 
(そもそもこの文書の発行が平成10年で既に第2次規格発行後。)

[353] >>351 では「 W」になってます。

[354] 
>>351 には [[ISO 8601]] 由来の [CODE[T]] だの [CODE[/]] だの [CODE[P]] 
だのといった区切りや[[時差]]の記述がありません。

そのかわりに範囲は前後の[[日時]]を「ダブルハイフン」でつなげると書かれています。
例えば

- [CODE[1975--1977]]
- [CODE[1975-02--03]] (2月から3月)
- [CODE[1975-02--1976-03]]

;; [[時刻]]の範囲の例なし

;; [[年]]や[[年月]]の単独表記は紹介されておらず、範囲の例の中にだけ出てくる

[355] 
また[[時刻]]には
[CODE[1975-02-20-1000]]
のように区切子が存在していません。

[356] これらは第1次規格に由来するのかもしれません。

[357] 
でも #page=101 には

>
[LEFT[
TRADE/WP.4/INF.1
08;TD/B/FAL/INF.1
08 (October, 1988)
]LEFT]

と書かれていて、これは第2次規格を指しているのですよ。

** その他

[218] 
[[中華人民共和国]]には [[ISO 8601:2000]] と同内容の
[DFN[GB/T 7408-2005]] があります。
(その前は [DFN[GB/T 7408-1994]] でした。)
[SRC[>>321]]
独自の規定は含まれないようです。

[322] 
[[大韓民国]]には [DFN[KS X ISO 8601:2010]] があります。
独自の規定は含まれないようです。


[359] 
[[インド]]においては、旧規格

- [361] [DFN[आई एस 10934 : 1983/आई एस ओ 3307 : 1975]]
([DFN[IS 10934 : 1983/ISO 3307 : 1975]])
[CITE[दिन के समय का प्र जतजनजधत्]]
[CITE[Representations of time of the day]]
- [362] [DFN[आई एस 10935 : 1983/आई एस ओ 2711 : 1975
([DFN[IS 10935 : 1983/ISO 2711[ASIS[-]] 1975]])
[CITE[[ASIS[क्र ]]जमक तारीखों का प्र जतजनजधत्]]
[CITE[Representation of time of the Day]]
- [363] [DFN[आई एस 11365 : 1985/आई एस ओ [ASIS[4031]]]]
([DFN[IS 11365 : 1985/ ISO 4031 [ASIS[:]]]])
[CITE[सूचना लेन-िेन में स्ट् थानीय समय अंतराल का प्र जतजनजधत्]]
[CITE[Representational of Local Times Differentials for Information Interchange]]

... が[TIME[2019-09-06]]に[RUBYB[[[取り下げ]]][withdraw]]されました。
[SRC[>>360]]

[REFS[
- [321] 
[CITE[60ab3074-78fb-47b7-96ba-91b66f9c849a.pdf]], [TIME[2018-01-15T03:14:43.000Z]], [TIME[2022-05-13T06:19:34.986Z]] <http://spec.nstl.gov.cn/metadata/download/upload/attpdf/60ab3074-78fb-47b7-96ba-91b66f9c849a.pdf>
- [360] 
[CITE[September252020_BIS_Notification.pdf]], [TIME[2020-09-29T11:39:18.000Z]], [TIME[2022-12-14T14:29:28.970Z]] <https://avantiscdnprodstorage.blob.core.windows.net/legalupdatedocs/11025/September252020_BIS_Notification.pdf#page=12>

]REFS]

* 構文解析

[8] [[ISO 8601]] は同仕様に適合する[[日時]]の構文のみを定めており、
適合しない[[日時]]が含まれる可能性がある場合の[[構文解析]]や解釈の方法には言及がありません。

[67] また [[ISO 8601]] は[[日時]]の多様な表現方法を認めていますが、
その中には構文上互いに区別できないものもあります。 [[ISO 8601]] としては、
どの表現方法を採用するか事前に[[情報交換の当事者間の合意]]があるはずなので問題ないという立場なのでしょう。

[146] [[HTML]] は、任意の文字列をどう [[HTMLの日時形式]]として解釈するべきかを曖昧無く規定しています。

[166] [[ISO 8601]] の日時形式に基づく各種仕様の中にはエラー処理の方法を一部規定するものもありますが、多くは明確に規定していません。

* 関連

[324] 
[[日時]]に関係して他に
[[ISO 34000]],
[[ISO 34002]],
[[ISO 34003]],
[[ISO 34300]]
が開発中です。

[414] 
[[npt-date]]

* 歴史

** ISO 日時標準の制定

[341] 
[TIME[西暦1971年][1971]]、
[DFN[ISO Recommendation R 2014-1971]] 
([DFN[ISO/R 2014]])
が発行されました。
[SRC[>>339]]

[349] 
[TIME[西暦1971年][1971]]、
[DFN[ISO Recommendation R 2015-1971]] 
([DFN[ISO/R 2015]])
が発行されました。
[SRC[>>346]]

;; [350] 興味深いことに、[[日本]]代表は反対票を投じました。 [SRC[>>346]]

[342] 
[TIME[西暦1972年][1972]]以降、
[[ISO/TC 154]]
は 
[[ISO/R 2014]],
[[ISO/R 2015]]
を[[勧告]]から[[国際標準]]に移行することを決めました。
[SRC[>>339, >>346]]


[338] 
[TIME[1976-04-01]]、
[DFN[ISO 2014-1976]]
[CITE[Writing of calendar dates in all-numeric form]]
[CITE[Représentation numérique des dates]]
が発行されました。
[SRC[>>339, >>340]]

[348] 
[TIME[1976-06-15]]、
[DFN[ISO 2015-1976]]
[CITE[Numbering of weeks]]
[CITE[Numérotage des semaines]]
が発行されました。
[SRC[>>346, >>347]]


[343] 
[[ISO 2014-1976]] は [[ISO/R 2014-1971]] と、
[[ISO 2015-1976]] は [[ISO/R 2015-1971]] と、
技術的に同等でした。
[SRC[>>339, >>346]]

[372] 
[TIME[1973-01-15]]、
[DFN[ISO 2711-1973]]
[CITE[Information processing interchange - Representation of ordinal dates]]
が
[[ISO/TC 97]]
により制定されました。
[TIME[西暦1972年7月][1972-07]]に賛成多数で承認されていました。
[SRC[>>371]]

[378] 
[TIME[1975-03-15]]、
[DFN[ISO 3307-1975]]
[CITE[Information interchange - Representations of time of the day]],
[CITE[Échange d'information - Représentations de l'heure]]
が
[[ISO/TC 97]]
により制定されました。
[TIME[西暦1973年11月][1973-11]]に賛成多数で承認されていました。
[SRC[>>376, >>377]]

[393] 
[TIME[1978-12-15]]、
[DFN[IS0 4031-1978]]
[CITE[Information interchange - Representation of local time differentials]],
[CITE[Échange d'information - Représentation des différences d'heure légale]]
が
[[ISO/TC 97]]
により制定されました。
[TIME[西暦1976年5月][1976-05]]に賛成多数で承認されていました。
[SRC[>>390, >>392]]

[373] 
[TIME[1981-12-01]]、
[[ISO 2711]],
[[ISO 3307]],
[[IS0 4031]]
が
[[ISO/TC 154]]
に移管されたことを示す
[[AMENDMENT SLIP]]
が発行されました。
[SRC[>>371, >>376, >>390]]

[REFS[
- [339] [CITE[ISO-2014-1976.pdf]], [TIME[2021-01-25T06:44:20.000Z]], [TIME[2022-12-14T13:10:10.164Z]] <https://cdn.standards.iteh.ai/samples/6781/6ac7d18a89834a7ab55a99d33c1aa6fb/ISO-2014-1976.pdf>
- [340] [CITE[ISO 2014:1976 - ISO 2014:1976 - ISO-2014-1976.pdf]], [TIME[2022-06-07T10:48:39.000Z]], [TIME[2022-12-14T13:10:19.903Z]] <https://cdn.standards.iteh.ai/samples/6781/a5152e17619b4148b0a256c93d50a231/ISO-2014-1976.pdf>
- [346] [CITE[ISO-2015-1976.pdf]], [TIME[2021-01-25T06:44:17.000Z]], [TIME[2022-12-14T13:22:11.974Z]] <https://cdn.standards.iteh.ai/samples/6782/671ca05048bb4621bab8e1679c38424c/ISO-2015-1976.pdf>
- [347] [CITE[ISO 2015:1976 - ISO 2015:1976 - ISO-2015-1976.pdf]], [TIME[2022-06-07T10:46:20.000Z]], [TIME[2022-12-14T13:22:22.383Z]] <https://cdn.standards.iteh.ai/samples/6782/579d402043cf4e2aaddc7d94fbe8e608/ISO-2015-1976.pdf>
- [371] 
[CITE[ISO-2711-1973.pdf]], [TIME[2021-01-25T05:17:24.000Z]], [TIME[2022-12-18T12:31:15.519Z]] <https://cdn.standards.iteh.ai/samples/7679/58b0ea41470d4e4e8aaa1511911e8e2c/ISO-2711-1973.pdf>
- [376] 
[CITE[ISO-3307-1975.pdf]], [TIME[2021-01-25T03:46:50.000Z]], [TIME[2022-12-18T12:50:57.488Z]] <https://cdn.standards.iteh.ai/samples/8554/c974603501b54acabf5fd23e6894e856/ISO-3307-1975.pdf>
- [377] 
[CITE[ISO 3307:1975 - ISO 3307:1975 - ISO-3307-1975.pdf]], [TIME[2022-06-07T11:19:06.000Z]], [TIME[2022-12-18T12:51:10.168Z]] <https://cdn.standards.iteh.ai/samples/8554/49a7b7e332e3428da6b75dc1b72a349a/ISO-3307-1975.pdf>
- [390] 
[CITE[ISO-4031-1978.pdf]], [TIME[2021-01-25T01:42:17.000Z]], [TIME[2022-12-18T13:18:30.775Z]] <https://cdn.standards.iteh.ai/samples/9722/5ec5ba16fff94c2db2bb51cddbe4d855/ISO-4031-1978.pdf>
- [392] [CITE[ISO 4031:1978 - ISO 4031:1978 - ISO-4031-1978.pdf]], [TIME[2022-06-07T09:57:41.000Z]], [TIME[2022-12-18T13:18:39.347Z]] <https://cdn.standards.iteh.ai/samples/9722/88a2a614fcae4ffe946e957fa9cdcdb0/ISO-4031-1978.pdf>



]REFS]

** ISO 8601 の制定


[259] 
[TIME[1988-06-15]]、
初版 [DFN[[[ISO 8601:1988]]]] が制定されました。
[[ISO/TC 154]]
により開発されたもので、
[[ISO 2014:1976]],
[[ISO 2015:1976]],
[[ISO 2711:1973]],
[[ISO 3307:1975]],
[[ISO 4031:1978]]
を廃止し置き換えるものでした。
[SRC[>>305]]

[260] 
[TIME[1991-05-01]]、
[[技術訂正票]]
[DFN[[[ISO 8601:1988]]/Cor.1:1991]] が制定されました。
3箇所が訂正されました。
[SRC[>>305]]

[261] 
[TIME[西暦2000年][year:2000]]に改訂版 
[DFN[[[ISO 8601:2000]]]] が制定されました。

[262] 
[TIME[西暦2004年][year:2004]]に改訂版 [DFN[[[ISO 8601:2004]]]] が制定されました。



[229] 
[TIME[西暦2019年2月][2019-02]]、
[DFN[ISO 8601-1:2019]]
[DFN[[CITE[Date and time -- Representations for information interchange -- Part 1: Basic rules]]]]
と
[DFN[ISO 8601-2:2019]]
[DFN[[CITE[Date and time -- Representations for information interchange -- Part 2: Extensions]]]]
が出版されました。

[[ISO 8601-1]] は基本的に前の版と同じで、
[[ISO 8601-2]] は [[EDTF]] や[[プロファイル]]に関する規定など新規の内容でした。


[398] 
[TIME[西暦2022年10月][2022-10]]、
[DFN[ISO 8601-1:2019/Amd.1:2022]]
[CITE[AMENDMENT 1: Technical corrections]]
が
[[ISO/TC 154]]
によって制定されました。
[SRC[>>399]]

[400] [[ISO 8601-1:2019]] の一部を改正し、規定や説明を挿入・置換するものです。
[SRC[>>399]]

[401] 
技術的に大きく変更するものではありませんが、より厳密な規定に改めるものと思われます。
(要検証)

[REFS[
- [399] [CITE[ISO 8601-1:2019/Amd 1:2022 - ISO 8601-1:2019/Amd 1:2022 - ISO-8601-1-2019-Amd-1-2022.pdf]], [TIME[2022-10-29T00:18:34.000Z]], [TIME[2022-12-18T13:56:35.061Z]] <https://cdn.standards.iteh.ai/samples/81801/f527872a9fe34281ae3a4af8e730f3f8/ISO-8601-1-2019-Amd-1-2022.pdf>
]REFS]

*メモ

[FIG(amazon)[
時計
]FIG]

[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]] は日時の部分は比較的明確に定義されていますが、時間間隔の部分は参照が多く、
その指示するところが曖昧になっている感じがあります。

[FIG(quote)[
[FIGCAPTION[
[167] [CITE[OASIS Open Document Format for Office Applications (OpenDocument) Version 1.2 - Part 1: OpenDocument Schema]]
([TIME[2011-09-29 13:00:00 +09:00]] 版)
<http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#attribute-number_calendar>
]FIGCAPTION]

> gengou: Japanese Gengou calendar, Emperor eras. Identical to Gregorian calendar but with different eras for each emperor. Consumers may implement only the modern eras starting 1868, Meiji, Taisho, Showa and Heisei. Earlier dates are then displayed using the Gregorian calendar '''['''JIS X 0301''']'''. 

]FIG]

[188] [CITE[PICS Signed Labels (DSig) 1.0 Specification]]
( ([TIME[2013-05-29 05:46:27 +09:00]] 版))
<http://www.w3.org/TR/REC-DSig-label/#Reference_Information>

[189] [CITE[REC-PICS-labels-961031]]
( ([TIME[1998-04-08 06:14:06 +09:00]] 版))
<http://www.w3.org/TR/REC-PICS-labels-961031#Detailed>

[FIG(quote)[
[FIGCAPTION[
[192] [CITE@ja[時刻 - Wikipedia]]
( ([TIME[2017-02-28 19:33:38 +09:00]]))
<https://ja.wikipedia.org/wiki/%E6%99%82%E5%88%BB>
]FIGCAPTION]

> 日付と時刻の表記に関する国際標準規格であるISO 8601では、コロンを用いないのが標準表記であり、拡張表記としてコロンを用いても良いものとされている。

]FIG]

[193] [[ISO 8601]] は [CODE[:]] のない[[基本書式]]と [CODE[:]]
のある[[拡張書式]]を定義していますが、[[基本書式]]が好ましいというニュアンスではないような気が・・・。

[FIG(quote)[
[FIGCAPTION[
[197] [CITE[Top-level Elements and Attributes (MODS Ver. 3 User Guidelines: Metadata Object Description Schema, Library of Congress)]]
([TIME[2016-07-22 06:48:40 +09:00]])
<https://www.loc.gov/standards/mods/userguide/generalapp.html>
]FIGCAPTION]

> iso8601 – This value identifies formatted dates allowed in ISO 8601 which use the alternative described as "basic" (i.e., with minimum number of separators) rather than "extended" (i.e., with separators). This alternative specified in the standard uses the following date patterns: YYYY; YYYY-MM if only year and month given; YYYYMMDD if year, month, and day are included (hours, minutes, seconds may also be added: Thhmmss.s). It is also used for other encodings specified in ISO 8601, e.g., date ranges, which are in the form of <date/time>/<date/time>.
> <dateIssued encoding="iso8601">20040604T121212</dateIssued>

]FIG]


[FIG(quote)[
[FIGCAPTION[
[198] [CITE@en[Upwork API Reference]]
([TIME[2017-03-13 18:51:45 +09:00]])
<https://developers.upwork.com/?lang=python#snapshots_get-snapshot>
]FIGCAPTION]

> timestamprequired, string
> The timestamp either in UTC according to ISO 8601 (yyyymmddTHHMMSSZ) or as a UNIX timestamp (number of seconds after epoch).

]FIG]


[FIG(quote)[
[FIGCAPTION[
[199] [CITE@en[PHP: DateTime - Manual]]
([TIME[2017-05-15 13:03:31 +09:00]])
<http://php.net/manual/en/class.datetime.php#datetime.constants.iso8601>
]FIGCAPTION]

> DateTime::ISO8601
> DATE_ISO8601
> ISO-8601 (example: 2005-08-15T15:52:01+0000)
> Note: This format is not compatible with ISO-8601, but is left this way for backward compatibility reasons. Use DateTime::ATOM or DATE_ATOM for compatibility with ISO-8601 instead.

]FIG]

[200] 注記の通り、 [[ISO 8601の日時形式]]を名乗っていますが、実際にはそうではありません。
([[基本書式]]と[[拡張書式]]が混在していますが、 [[ISO 8601]]
では認められていません。)

[201] [CITE@en-US[Draft Agenda – ISO/TC 154/WG 5 – Date and Time – ISO/TC 154 – "Open" Data Interchange]]
([TIME[2017-05-15 23:32:02 +09:00]])
<http://www.isotc154.org/isotc-154-2016-anual-meeting-details/isotc154wg5-agenda>


[213] [CITE[DocuSign REST API Guide - Appendix 2: Time Zone and Date/Time Information]]
([TIME[2016-05-12 08:00:05 +09:00]])
<https://www.docusign.com/p/RESTAPIGuide/RESTAPIGuide.htm#Appendix/Time Zone and Date-Time Information.htm%3FTocPath%3D_____12>

[FIG(quote)[
[FIGCAPTION[
[214] ([TIME[2010-11-12 16:34:33 +09:00]])
<http://xmlconsortium.org/wg/contact/data/ContactXML_01_01a.pdf>
]FIGCAPTION]

> データ型 string (ISO 8601 は必須、または RFC1123)
> 制限されるデータ値 YYYY-MM-DDThh:mm:ssTZD または YYYY-MM-DD
> (例)2001-08-13T19:20:30+09:00
> 提供側と受領側で合意されている場合に限り、RFC1123 形式を
> 使用しても構わない。
> (例)Wed, 27 Feb 2002 20:28:42 +090

]FIG]


[FIG(quote)[
[FIGCAPTION[
[215] [CITE@en[Git - git-commit Documentation]]
([TIME[2018-03-04 14:31:00 +09:00]])
<https://git-scm.com/docs/git-commit#git-commit-ISO8601>
]FIGCAPTION]

> ISO 8601
> Time and date specified by the ISO 8601 standard, for example 2005-04-07T22:13:13. The parser accepts a space instead of the T character as well.
> Note
> In addition, the date part is accepted in the following formats: YYYY.MM.DD, MM/DD/YYYY and DD.MM.YYYY.

]FIG]


[FIG(quote)[
[FIGCAPTION[
[216] [CITE@en-us[UTS #22: CharMapML]]
([TIME[2017-06-01 07:35:01 +09:00]])
<http://www.unicode.org/reports/tr22/tr22-8.html#att_date>
]FIGCAPTION]

> The date attribute value must be in ISO 8601 format (yyyy-mm-dd).
> 

]FIG]




[FIG(quote)[
[FIGCAPTION[
[246] [CITE@EN-US[Akoma Ntoso Naming Convention Version 1.0]]
([TIME[2019-02-22 02:00:00 +09:00]])
<https://docs.oasis-open.org/legaldocml/akn-nc/v1.0/os/akn-nc-v1.0-os.html#_Toc409028148>
]FIGCAPTION]

>   If an approved act, the version date of the Expression in syntax YYYY-MM-DD. For an Akoma Ntoso XML representation, this value MUST correspond to the content of element <FRBRdate> in the <FRBRExpression> section of the metadata. If appropriate, the date can be integrated with a time using values for the XSD:dataTime datatype: Thh:mm:ss±hh:mm. The difference between the local time and Coordinated Universal Time (UTC) is specified using the sign + or - followed by the difference from UTC represented as hh:mm (note: the minutes part is required). See ISO 8601 Date and Time Formats and XML Schema Part 2: Datatypes (http://www.w3.org/TR/xmlschema-2/).

]FIG]


[FIG(quote)[
[FIGCAPTION[
[249] [CITE[Sending a Request · Product Advertising API 5.0]]
([TIME[2020-02-14 17:00:36 +09:00]])
<https://webservices.amazon.com/paapi5/documentation/sending-request.html>
]FIGCAPTION]

> The format must be ISO 8601 basic format (YYYYMMDD'T'HHMMSS'Z'). 

]FIG]

[252] 
[[JIS X 4062:1998]] 4.2.7 「[B[JIS X 0301]] の暦日付完全表記拡張形式」


[FIG(quote)[
[FIGCAPTION[
[272] [CITE@en[Linked Data Proofs 1.0]]
([TIME[2020-12-29T01:58:33.000Z]], [TIME[2020-12-29T06:02:37.718Z]])
<https://w3c-ccg.github.io/ld-proofs/#proof-algorithm>
]FIGCAPTION]

> an '''['''ISO8601''']''' combined date and time string, created, containing the current date and time, accurate to at least one second, in Universal Time Code format

]FIG]


[273] [CITE@en[Allow ISO 8601 formatted string for `fast_string_to_time`]]
([[kamipo]], [TIME[2020-06-20 10:50:08 +09:00]], [TIME[2020-12-31T03:21:49.000Z]])
<https://github.com/rails/rails/commit/f870537c4706ef64744958c374fd08243a913543>

[FIG(quote)[
[FIGCAPTION[
[311] [CITE[ニコニコ動画 『スナップショット検索 v2 API』 ガイド]]
([TIME[2021-03-26T03:04:50.000Z]])
<https://site.nicovideo.jp/search-api-docs/snapshot>
]FIGCAPTION]

> 2021年4月以降、日時のフォーマットが厳格化されます。ISO 8601形式のうち、YYYY-MM-DDThh:mm:ss±hh:mmのフォーマットで指定してください。

]FIG]


[FIG(quote)[
[FIGCAPTION[
[312] [CITE@ja[村田真のXMLブログ]]
([TIME[2016-03-09T06:28:21.000Z]], [TIME[2021-06-10T02:33:08.078Z]])
<http://www.xmlmaster.org/murata/xmlblog/xb090705.html>
]FIGCAPTION]

> SC34/WG4コペンハーゲン会議

]FIG]



[406] [CITE@ja[Xユーザーの伊藤 祐策(パソコンの大先生)さん: 「日付の表記を全世界統一にして欲しい。そんな願いを叶えてるべく作られたのがISO8601なのです...。 しかし!誰も使ってくれないのである!!使ってくれないのである!!!」 / X]], [TIME[午後10:04 · 2023年11月2日][2023-11-02T13:04:26.000Z]], [TIME[2023-11-02T14:53:09.000Z]] <https://twitter.com/ito_yusaku/status/1720064324901962240>


[407] 
>>406 そんな壮大な野望、 [[ISO 8601]] のどこにも書かれていないと思うのだが...
何を根拠にそう言えるのだろうか? 作った人に聞いたのか?


[415] 
[CITE@ja[XユーザーのASUS好きのZenBlog(ゼンブログ)さん: 「YYYYMMDDってISOで定められてるのかよ。みんな揃えてよ! https://t.co/NJvx6ypmqw」 / X]], [TIME[午後8:10 · 2025年1月19日][2025-01-19T11:10:51.000Z]], [TIME[2025-01-20T00:54:51.000Z]] <https://x.com/ASUS_ZenBlog/status/1880935950131552405>



[416] >>415 の出典の画像は [[ChatGPT]]?