1 |
wakaba |
1.2 |
[7] [[HTML]] ではいくつかの[[属性]]などで[[日時]]を表す文字列が用いられています。
|
2 |
|
|
そのほとんどは [[ISO 8601の日付形式]]に近いものですが、歴史的な理由により異なる書式を採用している文脈もあります。
|
3 |
|
|
|
4 |
wakaba |
1.3 |
[[HTML]] で定義されている[[日付形式]]には、次のものがあります。
|
5 |
|
|
- [[時刻]]
|
6 |
|
|
- [[月]]
|
7 |
|
|
- [[日付]]
|
8 |
|
|
- [[週]]
|
9 |
|
|
- [[地方日時]]
|
10 |
|
|
- [[大域日時]]
|
11 |
|
|
- [[日付か時刻]]
|
12 |
|
|
|
13 |
wakaba |
1.2 |
[8] 仕様書:
|
14 |
|
|
- [[HTML5]] <http://www.whatwg.org/specs/web-apps/current-work/#dates-and-times>
|
15 |
|
|
|
16 |
|
|
* 定義
|
17 |
|
|
|
18 |
|
|
[10] [DFN[[RUBYB[数字]@en[digit]]]]とは、
|
19 |
wakaba |
1.4 |
[CODE(char)[[[U+0030]]]]〜[CODE(char)[[[U+0039]]]] の[[文字]]であって、
|
20 |
wakaba |
1.2 |
[[十進数]]を表すために使われます [SRC@en[[[HTML5]]]]。
|
21 |
|
|
|
22 |
|
|
[9] ある[[年]]のある[[月]]の[[日]]の数は、[[グレゴリオ暦]]に基づき、次のように定義されています
|
23 |
|
|
[SRC@en[[[HTML5]]]]。
|
24 |
|
|
- [[1月]]、[[3月]]、[[5月]]、[[7月]]、[[8月]]、[[10月]]、[[12月]]は、 '''31'''
|
25 |
|
|
- [[4月]]、[[6月]]、[[9月]]、[[11月]]は、 '''30'''
|
26 |
|
|
- [[2月]]は、
|
27 |
|
|
-- [[年]]が400で割り切れるか、または4で割り切れて100で割り切れないなら
|
28 |
|
|
([[閏年]]なら)、 '''29'''
|
29 |
|
|
-- それ以外なら、 '''28'''
|
30 |
|
|
|
31 |
wakaba |
1.4 |
* 時刻
|
32 |
|
|
|
33 |
|
|
[20] [DFN[[RUBYB[時刻]@en[time]]]]は、特定の[[時刻]]を表し、
|
34 |
|
|
[[時]]、[[分]]、[[秒]]、[[秒の小数部]]から成ります。[[時間帯]]の情報は持ちません。
|
35 |
|
|
[SRC@en[[[HTML5]]]]
|
36 |
|
|
|
37 |
|
|
-[21] [CODE(ABNF)[[DFN[[RUBYB[妥当な時刻文字列]@en[valid time string]]]] := 2[[数字]] ":" 2[[数字]] [":" 2[[数字]] ["." 1*[[数字]] ] ] ]]
|
38 |
|
|
[SRC@en[[[HTML5]]]]
|
39 |
|
|
-- 1つ目の[[数字]]列は、[[時]]を表す 0〜23 の[[数]]
|
40 |
|
|
-- 2つ目の[[数字]]列は、[[分]]を表す 0〜59 の[[数]]
|
41 |
|
|
-- 3つ目の[[数字]]列は、[[秒]]の[[整数部]]を表す 0〜59 の[[数]] ([[秒]]が 0 の時だけ省略可能)
|
42 |
|
|
-- 4つ目の[[数字]]列は、[[秒]]の[[小数部]]を表す値 ([[秒]]が[[整数]]の時だけ省略可能)
|
43 |
|
|
|
44 |
|
|
[23] [DFN[[RUBYB[時刻文字列の構文解析]@en[parse a time string]]]]
|
45 |
|
|
[SRC@en[[[HTML5]]]]:
|
46 |
|
|
= [[時刻部品の構文解析]]を行い、それが何も返さなかったら、何も返さないで終える
|
47 |
|
|
= [[文字列]]がそれで終わっていなければ、何も返さないで終える
|
48 |
|
|
= (1) で得られた[[時]]と[[分]]と[[秒]]を返す
|
49 |
|
|
|
50 |
|
|
[24] [DFN[[RUBYB[時刻部品の構文解析][parse a time component]]]]
|
51 |
|
|
[SRC@en[[[HTML5]]]]:
|
52 |
|
|
= [[文字列]]が[[正規表現]] [CODE(regexp)[([[数字]]{2}):([[数字]]{2})(?::([[数字]]{2}(?:\.[[数字]]+)?))?]]
|
53 |
|
|
に[[一致]]しない場合、何も返さず終わる
|
54 |
|
|
= $1 を[[十進数]]として解釈したものを[[時]]とする
|
55 |
|
|
= $2 を[[十進数]]として解釈したものを[[分]]とする
|
56 |
|
|
= $3 を[[十進数]]として解釈したものを[[秒]]とする ($3 がない場合、 0 とする)
|
57 |
|
|
= [[時]]が 0〜23 でない場合、何も返さない
|
58 |
|
|
= [[分]]が 0〜59 でない場合、何も返さない
|
59 |
|
|
= [[秒]]が 60 [[未満]]の[[正数]]でない場合、何も返さない
|
60 |
|
|
= [[時]]と[[分]]と[[秒]]を返す
|
61 |
|
|
|
62 |
wakaba |
1.2 |
* 月
|
63 |
|
|
|
64 |
|
|
[11] [DFN[[RUBYB[月]@en[month]]]]は、[[グレゴリオ暦]]上の[[日付]]を表します。ただし、
|
65 |
|
|
[[月]]は[[時間帯]]の情報を持ちませんし、[[日付]]の精度は[[年]]と[[月]]だけで、[[日]]は特定しません。
|
66 |
|
|
[SRC@en[[[HTML5]]]]
|
67 |
|
|
|
68 |
|
|
- [13] [CODE(ABNF)[[DFN[[RUBYB[妥当な月]@en[valid month]]]] := 4*[[数字]] "-" 2[[数字]]]]
|
69 |
|
|
[SRC@en[[[HTML5]]]]
|
70 |
|
|
-- 1つ目の[[数字]]列は、[[年]]を表す[[正数]]
|
71 |
wakaba |
1.3 |
-- 2つ目の[[数字]]列は、[[月]]を表す 1〜12 の[[数]]
|
72 |
wakaba |
1.2 |
|
73 |
|
|
[14] [DFN[[RUBYB[月文字列の構文解析]@en[parse a month string]]]]
|
74 |
|
|
[SRC@en[[[HTML5]]]]:
|
75 |
|
|
= [[月部品の構文解析]]を行い、それが何も返さなかったら、何も返さないで終える
|
76 |
|
|
= [[文字列]]がそれで終わっていなければ、何も返さないで終える
|
77 |
|
|
= (1) で得られた[[年]]と[[月]]を返す
|
78 |
|
|
|
79 |
wakaba |
1.3 |
[15] [DFN[[RUBYB[月部品の構文解析][parse a month component]]]]
|
80 |
wakaba |
1.2 |
[SRC@en[[[HTML5]]]]:
|
81 |
wakaba |
1.4 |
- 与えられた[[文字列]]が[[正規表現]] [CODE(regexp)[([[数字]]{4,})-([[数字]]{2})]]
|
82 |
wakaba |
1.2 |
に[[一致]]すれば、
|
83 |
|
|
-= $1 を[[十進数]]として解釈したものを[[年]]とする
|
84 |
|
|
-= $2 を[[十進数]]として解釈したものを[[月]]とする
|
85 |
|
|
-= [[年]]が 0 なら、何も返さない
|
86 |
wakaba |
1.3 |
-= [[月]]が 1〜12 でなければ、何も返さない
|
87 |
wakaba |
1.2 |
-= そうでない場合、[[年]]と[[月]]を返す
|
88 |
|
|
- そうでない場合、何も返さない
|
89 |
wakaba |
1.3 |
|
90 |
|
|
* 日付
|
91 |
|
|
|
92 |
|
|
[16] [DFN[[RUBYB[日付]@en[date]]]]は、[[グレゴリオ暦]]上の[[日付]]を表します。
|
93 |
|
|
[[日付]]には[[年]]、[[月]]、[[日]]が含まれますが、[[時間帯]]は含まれません。
|
94 |
|
|
[SRC@en[[[HTML5]]]]
|
95 |
|
|
|
96 |
|
|
-[17] [CODE(ABNF)@en[[DFN[[RUBYB[妥当な日付文字列]@en[valid date string]]]] := [[妥当な月文字列]] "-" 2[[数字]]]]
|
97 |
|
|
[SRC@en[[[HTML5]]]]
|
98 |
|
|
-- 最後の[[数字]]列は、[[年]]と[[月]]に基づく[[日]]の数 (>>9) [[以下]]の[[正数]]で、[[日]]を表す
|
99 |
|
|
|
100 |
|
|
[18] [DFN[[RUBYB[日付文字列の構文解析]@en[parse a date string]]]]
|
101 |
|
|
[SRC@en[[[HTML5]]]]:
|
102 |
|
|
= [[日付部品の構文解析]]を行い、それが何も返さなかったら、何も返さないで終える
|
103 |
|
|
= [[文字列]]がそれで終わっていなければ、何も返さないで終える
|
104 |
|
|
= (1) で得られた[[年]]と[[月]]と[[日]]を返す
|
105 |
|
|
|
106 |
|
|
[19] [DFN[[RUBYB[日付部品の構文解析][parse a date component]]]]
|
107 |
|
|
[SRC@en[[[HTML5]]]]:
|
108 |
|
|
= [[月部品の構文解析]]により、[[年]]と[[月]]を得る。何も返されなかった場合、何も返さず終わる
|
109 |
wakaba |
1.4 |
= [[文字列]]の続きが[[正規表現]] [CODE(regexp)[-([[数字]]{2})]] に[[一致]]しない場合、何も返さず終わる
|
110 |
wakaba |
1.3 |
= $1 を[[十進数]]として解釈したものを[[日]]とする
|
111 |
wakaba |
1.4 |
= [[日]]が[[年]]と[[月]]に基づく[[日]]の数 (>>9) [[以下]]の[[正数]]でなければ、何も返さず終わる
|
112 |
wakaba |
1.3 |
= [[年]]と[[月]]と[[日]]を返す
|
113 |
wakaba |
1.2 |
|
114 |
|
|
* 暦との関係
|
115 |
|
|
|
116 |
|
|
[12] [[HTML]] は[[グレゴリオ暦]] (だけ) を採用しています。[[グレゴリオ暦]]が採用される以前の[[日付]]も表すことができますが、
|
117 |
|
|
[[グレゴリオ暦]]を過去に延長した場合に相当する[[日付]]を使って表されます
|
118 |
|
|
(proleptic グレゴリオ暦などと呼ばれます)。
|
119 |
wakaba |
1.4 |
|
120 |
|
|
[22] [[HTML]] の[[日付形式]]は[[閏秒]]に対応していません。[[秒]]の部分に 60 や 61
|
121 |
|
|
を使うことは認められていません。
|
122 |
wakaba |
1.2 |
|
123 |
wakaba |
1.1 |
* [CODE(SGML)[%Datetime;]] 型 (HTML 4, XHTML 1)
|
124 |
|
|
|
125 |
|
|
[1] [[HTML 4]] の [DFN[[CODE(SGML)[%Datetime]]]] 型は、
|
126 |
|
|
[[W3C-DTF]] の2番目に長い (秒未満までは表現できない)
|
127 |
|
|
形式です。
|
128 |
|
|
|
129 |
|
|
[6] 仕様書:
|
130 |
|
|
- [[HTML 4]]
|
131 |
|
|
-- <IW:HTML4:"types.html#type-datetime">
|
132 |
|
|
-- [[厳密DTD]] <IW:HTML4:"sgml/dtd.html#Datetime">
|
133 |
|
|
-- [[移行用DTD]] <IW:HTML4:"sgml/loosedtd.html#Datetime">
|
134 |
|
|
-[[XHTML 1.0]]
|
135 |
|
|
-- [CSECTION[A.1.1. XHTML-1.0-Strict]]
|
136 |
|
|
<http://www.w3.org/TR/2002/REC-xhtml1-20020801/dtds.html#dtdentry_xhtml1-strict.dtd_Datetime>
|
137 |
|
|
-- [CSECTION[A.1.2. XHTML-1.0-Transitional]]
|
138 |
|
|
<http://www.w3.org/TR/2002/REC-xhtml1-20020801/dtds.html#dtdentry_xhtml1-transitional.dtd_Datetime>
|
139 |
|
|
-- [CSECTION[A.1.3. XHTML-1.0-Frameset]]
|
140 |
|
|
<http://www.w3.org/TR/2002/REC-xhtml1-20020801/dtds.html#dtdentry_xhtml1-frameset.dtd_Datetime>
|
141 |
|
|
- [[XHTML m12n]]
|
142 |
|
|
--[CSECTION[4.3. Attribute Types]]
|
143 |
|
|
<IW:XHTML1m12n:"abstraction.html#dt_Datetime">
|
144 |
|
|
|
145 |
|
|
[5]
|
146 |
|
|
:[[引数実体名]]:[CODE(SGML)[%Datetime]] ([[HTML 4]], [[XHTML 1.0]])
|
147 |
|
|
:抽象属性型名:[CODE[Datetime]] ([[XHTML m12n]])
|
148 |
|
|
:属性型名:[Q[datetime]] ([[HTML 4]])
|
149 |
|
|
:[[SGML]] [[属性型]]:[CODE(SGML)[[[CDATA]]]]
|
150 |
|
|
:[[XML]] [[属性型]]:[CODE(XML)[[[CDATA]]]]
|
151 |
|
|
:大文字・小文字:区別あり
|
152 |
|
|
|
153 |
|
|
[2] 大文字・小文字は区別されます。
|
154 |
|
|
[CODE(HTML)[T]] と [CODE(HTML)[Z]] が使われ得ますが、
|
155 |
|
|
いずれも大文字でなければなりません。
|
156 |
|
|
|
157 |
|
|
[3] 時・分・秒が得られない時は、 [CODE(HTML)[00]]
|
158 |
|
|
としてもよいことになっています。
|
159 |
|
|
閏秒の 60秒は W3C‐DTF では表現できません。
|
160 |
|
|
|
161 |
|
|
[4]
|
162 |
|
|
[CODE(HTMLe)[[[ins]]]] 要素や [CODE(HTMLe)[[[del]]]] 要素の [CODE(HTMLa)[[[datetime]]]] 属性が [CODE(SGML)[%Datetime]] 型です。
|
163 |
|
|
|
164 |
|
|
|
165 |
|
|
[[#comment]]
|
166 |
|
|
|
167 |
|
|
|
168 |
|
|
* メモ |