decimal representation

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年3月25日の12時18分は 2016-03-25T12:18 と表記します。) が、 人間が対象読者なら、この表記は一般的ではありませんから、奇妙に思われるでしょう。 時刻を「time」と呼ぶ英語圏ですら、この表記は (人間対象には) 普及していません。

仕様書

[37] ISO 8601>>38 から入手できますが、有料です。

表記法

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

表現

[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

[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」はそのまま日時表現に現れます。

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

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

時の表現

[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

[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指示子時差により明確に時刻と判断できるからでしょうか。)

[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 にはそのような規定はなく、ローカルルールです。

日時の表現

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

時間間隔の表現

[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 のような表現も良いことになります。

時間長と文脈による表現

[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 の拡張では、 MTSH元号を表す記号として使っています >>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

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

[53] 空白 (space) は、明示的に認められた場合を除き、使ってはなりません。 >>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

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

小数点

[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

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

プロファイルと変種

[66] 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
HTML: 妥当な地方日時文字列
年のみ
×
年月のみ
×
年月日のみ
×
負の年
×
0年
×
5桁以上の年
日時区切り
T/U+0020
24時
×
秒の省略
秒の小数部
指定可
閏秒
なし
時間帯
禁止
UTC
-
時間帯の範囲
-
-0000
-
x
xs:dateTime (1.1)
年のみ
×
年月のみ
×
年月日のみ
×
負の年
0年
5桁以上の年
先導0禁止
日時区切り
T
24時
秒の省略
×
秒の小数部
指定可
閏秒
なし
時間帯
指定可
UTC
Z
時間帯の範囲
0-14
-0000
特記なし
x
xs:dateTimeStamp (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 http://www.w3.org/TR/1998/NOTE-datetime は、 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

>>14 の関連規格だけど日付形式は違う (名無しさん)

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

[195] clock (RTSP)

[196] NPT

[187] XMPPの日時形式も、 ISO 8601 から派生したものです。

RFC 3339 の ISO 8601 構文

[203] RFC 3339 は、RFC 3339の日時形式を規定するだけでなく、 ISO 8601:1988ABNF 構文も参考として示しています >>202

[204] RFC 3339ISO 8601 が曖昧であると指摘して、 次のように解釈しています >>202

  • [205] 基本書式拡張書式の混合が認められるか不明なので、 認めることとする。
  • [206] 240 以外となることが認められるか不明なので、 に関わらず認めることとする。
  • [207] 日の数の制約を適用する。
  • [208] T が省略できる場合があるとされているが、 曖昧性を除去するため、必須とする。
  • [209] 小数部があって整数部0 のとき、 0 を省略できないと本文にあり、省略した例示があるが、 本文に従い省略できないこととする。

[211] こうした問題のいくつかは、 ISO 8601 の改訂で解消しています。

各国版

JIS X 0301

[39] JIS では JIS X 0301 が対応します。 (JIS X 0302 (時刻形式) は X0301 に吸収されて廃止。)

[40] >>39 但し JIS X 0301 では元号の表現についても規定しています。 そのため対応度は MOD

[44] :2002 5.1.3 で、文字に とかを追加してるけど、 4.4 を修正してないのは初歩的なミス。 4.4 は JIS X 0201 で規定する文字を使うといっているが、 とかは 0201 にはない。

[41] JIS X 0301 は 2002年に新版が出たらしいのですが、 JISC Web site からはまだ入手出来ないどころか、旧版も見れない状態が続いています。

[42] >>41 今は :2002 が入手できるようです。

[172] 元号を使う場合、次の接頭辞の後2桁の数字で年号を表記します。

元号コードも参照。

[173] また元号を使う場合は年月日の区切りに - ではなく . を使います。

[174] なお明治6年の改暦より前は適用範囲外とされています。

[181] 年は2桁とされているので、平成100年以降も表せないことになります。

[184] 改元があった場合、改正されるものと思われます。

CNS 7648

[169] 中華民国CNS では CNS 7648ISO 8601 に対応します。

[170] CNS 7648民国紀元の表現についても規定しているとされていて、 R.O.C.74-04-12 のように R.O.C. を使って表記するとされています。

[171] 最新版である民国81年の改訂版の附録A (参考、12ページ) の例示には確かにそのような表記例が示されています。 しかしなぜか肝心の本文にはまったく言及がありません。

[178] 日本語WikipediaCNS 7648民国紀元が 「西暦と共に標準化されている」 >>177 と述べ、 CNS民国紀元を定義していると誤解を招くような説明をしています。 中文版と英語版は CNS民国紀元による表記方法があると述べるにとどまっています。 ただし英語WikipediaROC 93-05-03 という例を示しています >>179中文Wikipedia の例は R.O.C.102-01-01 >>180日本語Wikipedia の例は R.O.C.90-09-11 >>177 で、 「.」が入っていて U+0020 は入りません。

TIS 1111

[183] タイでは TIS 1111:2535 >>217 (1992) が ISO 8601 に相当しています。 TIS 1111の日時形式は、 当時の ISO 8601の日時形式とほぼ同じものですが、 西暦4桁または2桁年号のかわりに仏暦4桁または2桁年号を採用しています。

その他

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

構文解析

[8] ISO 8601 は同仕様に適合する日時の構文のみを定めており、 適合しない日時が含まれる可能性がある場合の構文解析や解釈の方法には言及がありません。

[67] また ISO 8601日時の多様な表現方法を認めていますが、 その中には構文上互いに区別できないものもあります。 ISO 8601 としては、 どの表現方法を採用するか事前に情報交換の当事者間の合意があるはずなので問題ないという立場なのでしょう。

[146] HTML は、任意の文字列をどう HTMLの日時形式として解釈するべきかを曖昧無く規定しています。

[166] ISO 8601 の日時形式に基づく各種仕様の中にはエラー処理の方法を一部規定するものもありますが、多くは明確に規定していません。

歴史

[9] 1988年に初版 ISO 8601:1988 が、1991年に技術訂正票 ISO 8691:1988/Cor.1:1991 が、 2000年に改訂版 ISO 8601:2000 が、 2004年に改訂版 ISO 8601:2004 が出版されています。

メモ

日付 時刻

[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 は日時の部分は比較的明確に定義されていますが、時間間隔の部分は参照が多く、 その指示するところが曖昧になっている感じがあります。

[167] OASIS Open Document Format for Office Applications (OpenDocument) Version 1.2 - Part 1: OpenDocument Schema ( 版) http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#attribute-number_calendar

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]

[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

[192] 時刻 - Wikipedia ( ()) https://ja.wikipedia.org/wiki/%E6%99%82%E5%88%BB

日付と時刻の表記に関する国際標準規格であるISO 8601では、コロンを用いないのが標準表記であり、拡張表記としてコロンを用いても良いものとされている。

[193] ISO 8601: のない基本書式: のある拡張書式を定義していますが、基本書式が好ましいというニュアンスではないような気が・・・。

[197] Top-level Elements and Attributes (MODS Ver. 3 User Guidelines: Metadata Object Description Schema, Library of Congress) () https://www.loc.gov/standards/mods/userguide/generalapp.html

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>

[198] Upwork API Reference () https://developers.upwork.com/?lang=python#snapshots_get-snapshot

timestamprequired, string

The timestamp either in UTC according to ISO 8601 (yyyymmddTHHMMSSZ) or as a UNIX timestamp (number of seconds after epoch).

[199] PHP: DateTime - Manual () http://php.net/manual/en/class.datetime.php#datetime.constants.iso8601

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.

[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

[214] () http://xmlconsortium.org/wg/contact/data/ContactXML_01_01a.pdf

データ型 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

[215] Git - git-commit Documentation () https://git-scm.com/docs/git-commit#git-commit-ISO8601

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.

[216] UTS #22: CharMapML () http://www.unicode.org/reports/tr22/tr22-8.html#att_date

The date attribute value must be in ISO 8601 format (yyyy-mm-dd).