[7] [[HTML]] ではいくつかの[[属性]]などで[[日時]]を表す文字列が用いられています。
そのほとんどは [[ISO 8601の日付形式]]に近いものですが、歴史的な理由により異なる書式を採用している文脈もあります。
[8] 仕様書:
- [[HTML5]]
* 定義
[10] [DFN[[RUBYB[数字]@en[digit]]]]とは、
[CODE(char)[[[U+0030]]]]~[CODE(char)[[[0039]]]] の[[文字]]であって、
[[十進数]]を表すために使われます [SRC@en[[[HTML5]]]]。
[9] ある[[年]]のある[[月]]の[[日]]の数は、[[グレゴリオ暦]]に基づき、次のように定義されています
[SRC@en[[[HTML5]]]]。
- [[1月]]、[[3月]]、[[5月]]、[[7月]]、[[8月]]、[[10月]]、[[12月]]は、 '''31'''
- [[4月]]、[[6月]]、[[9月]]、[[11月]]は、 '''30'''
- [[2月]]は、
-- [[年]]が400で割り切れるか、または4で割り切れて100で割り切れないなら
([[閏年]]なら)、 '''29'''
-- それ以外なら、 '''28'''
* 月
[11] [DFN[[RUBYB[月]@en[month]]]]は、[[グレゴリオ暦]]上の[[日付]]を表します。ただし、
[[月]]は[[時間帯]]の情報を持ちませんし、[[日付]]の精度は[[年]]と[[月]]だけで、[[日]]は特定しません。
[SRC@en[[[HTML5]]]]
- [13] [CODE(ABNF)[[DFN[[RUBYB[妥当な月]@en[valid month]]]] := 4*[[数字]] "-" 2[[数字]]]]
[SRC@en[[[HTML5]]]]
-- 1つ目の[[数字]]列は、[[年]]を表す[[正数]]
-- 2つ目の[[数字]]列は、[[月]]を表す 1~12 の[[数]]
[14] [DFN[[RUBYB[月文字列の構文解析]@en[parse a month string]]]]
[SRC@en[[[HTML5]]]]:
= [[月部品の構文解析]]を行い、それが何も返さなかったら、何も返さないで終える
= [[文字列]]がそれで終わっていなければ、何も返さないで終える
= (1) で得られた[[年]]と[[月]]を返す
[15] [DFN[[RUBYB[月部品の構文解析][parse a month component]]]
[SRC@en[[[HTML5]]]]:
- 与えられた[[文字列]]が[[正規表現]] [CODE(regexp)[([0-9]{4,})-([0-9]{2})]]
に[[一致]]すれば、
-= $1 を[[十進数]]として解釈したものを[[年]]とする
-= $2 を[[十進数]]として解釈したものを[[月]]とする
-= [[年]]が 0 なら、何も返さない
-= [[月]]が 1~12 でなければ、何も返さない
-= そうでない場合、[[年]]と[[月]]を返す
- そうでない場合、何も返さない
* 暦との関係
[12] [[HTML]] は[[グレゴリオ暦]] (だけ) を採用しています。[[グレゴリオ暦]]が採用される以前の[[日付]]も表すことができますが、
[[グレゴリオ暦]]を過去に延長した場合に相当する[[日付]]を使って表されます
(proleptic グレゴリオ暦などと呼ばれます)。
* [CODE(SGML)[%Datetime;]] 型 (HTML 4, XHTML 1)
[1] [[HTML 4]] の [DFN[[CODE(SGML)[%Datetime]]]] 型は、
[[W3C-DTF]] の2番目に長い (秒未満までは表現できない)
形式です。
[6] 仕様書:
- [[HTML 4]]
--
-- [[厳密DTD]]
-- [[移行用DTD]]
-[[XHTML 1.0]]
-- [CSECTION[A.1.1. XHTML-1.0-Strict]]
-- [CSECTION[A.1.2. XHTML-1.0-Transitional]]
-- [CSECTION[A.1.3. XHTML-1.0-Frameset]]
- [[XHTML m12n]]
--[CSECTION[4.3. Attribute Types]]
[5]
:[[引数実体名]]:[CODE(SGML)[%Datetime]] ([[HTML 4]], [[XHTML 1.0]])
:抽象属性型名:[CODE[Datetime]] ([[XHTML m12n]])
:属性型名:[Q[datetime]] ([[HTML 4]])
:[[SGML]] [[属性型]]:[CODE(SGML)[[[CDATA]]]]
:[[XML]] [[属性型]]:[CODE(XML)[[[CDATA]]]]
:大文字・小文字:区別あり
[2] 大文字・小文字は区別されます。
[CODE(HTML)[T]] と [CODE(HTML)[Z]] が使われ得ますが、
いずれも大文字でなければなりません。
[3] 時・分・秒が得られない時は、 [CODE(HTML)[00]]
としてもよいことになっています。
閏秒の 60秒は W3C‐DTF では表現できません。
[4]
[CODE(HTMLe)[[[ins]]]] 要素や [CODE(HTMLe)[[[del]]]] 要素の [CODE(HTMLa)[[[datetime]]]] 属性が [CODE(SGML)[%Datetime]] 型です。
[[#comment]]
* メモ