-
Notifications
You must be signed in to change notification settings - Fork 4
/
826.txt
332 lines (242 loc) · 15.1 KB
/
826.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
[1]
俗に [DFN@en[[[W3C-DTF]]]] と呼ばれる[[日付形式]]は、
[TIME[1997年9月][1997-09]]に [[W3C]] の[[会員]]企業である [[Reuters Limited]]
が [[W3C]] に[[提出]]した [[ISO 8601の日付形式]]の[[プロファイル]]です。
[FIG(important)[
[8] 「W3C-DTF」と呼ばれている[[日時形式]]は、実際には [[W3C]] が制定したものではありません
(>>33)。
]FIG]
[3]
[[ISO 8601]] は、様々な[[応用]]を考慮して、
割と自由な[[日付]]と[[時刻]]の表現形式を規定しています。
この[[プロファイル]]では、それを [[Web]]
で使うにあたって無駄な自由度をなくしており、機械処理が比較的容易になっています。
[4]
必要な[[精度]] ([[日]]まで、[[秒]]までなど)
で6種類の書式が定義されています。
* 代替
[27] 既に [[W3C-DTF]] を用いることと決められている場合を除き、
[[日時]]を [[W3C-DTF]] によって表現するべきではありません。
[31] [[W3C-DTF]] の[[仕様書]]は、手続き上は[[廃止]]されていません
[WEAK[([[W3C Note]] なので「現行」も「[[廃止]]」も無いのかも?)]]。
しかし、現代の基準では[[標準]]規格として十分な品質を有しておらず、
十数年間誰にもメンテナンスされず放置されており、
[[XML Schema]] や [[HTML5]] をはじめとした新しい世代の[[仕様]]からも参照されていません。
従って、実質的には失効しているとみなすべきでしょう。
[28] [[HTML]] その他 [[Web]] 上では、一般に
'''[[HTMLの日時形式]]'''のいずれかを用いるのが便利と思われます。
[29] [[XML]] では、 '''[CODE(XML)@en[xs:dateTime]]''' を用いるのが良さそうです。
[[W3C-DTF]] に関する [[W3Cスタッフ]]コメントからも、それが当時の [[W3C]]
の意向であることがうかがえます (>>10)。
* 仕様書
[REFS[
- [5] [CITE@en[Date and Time Formats]] ([[W3C]] [[会員提出物]])
<http://www.w3.org/TR/1998/NOTE-datetime-19980827>
-- [CITE@en[Submission request to the World Wide Web Consortium]]
<http://www.w3.org/Submission/1997/14/>
-- [CITE@en[Status for Date and Time Formats]]
<http://www.w3.org/1998/.status/NOTE-datetime-19980827/status>
-- [CITE@en[Comment on Date and Time Formats Submission]]
([[W3C]] [[スタッフ]]注釈)
<http://www.w3.org/Submission/1997/14/Comment>
- [25] [CITE[RDF Site Summary 1.0 Modules: Dublin Core]] ([TIME[2002-07-02 20:19:41 +09:00]] 版) <http://web.resource.org/rss/1.0/modules/dc/>
- [22] [CITE[The Atom Syndication Format 0.3 (PRE-DRAFT)]] ([TIME[2006-12-22 17:03:44 +09:00]] 版) <http://www.mnot.net/drafts/draft-nottingham-atom-format-02.html#rfc.section.3.3>
- [20] [CITE@en[SMIL 3.0 Timing and Synchronization]] ([TIME[2008-12-02 00:45:09 +09:00]] 版) <http://www.w3.org/TR/2008/REC-SMIL3-20081201/smil-timing.html#q31>
]REFS]
[33] [[W3C]] の [[Webサイト]]で公開されていますが、
[[W3C]] [[会員]]企業が [[W3C]] に[[提出]]したことを表すだけであり、
[[W3C]] の正式な規格ではありません。
当時の [[W3C]] の制度では [[W3C Note]] となっていますが、
現在の制度下であれば [[Member Submission]] と呼んで区別されているものです。
* 暦法
[30]
明示されていませんが、 [[ISO 8601のプロファイル]]であることから
[[ISO 8601]] の規定に従い[[先発グレゴリオ暦]]を採用しています。
* 構文
[40] 利用する場面によって粒度が異なるとして幾つかの構文が定義されており、
どれを採用するか利用するプロトコルの側で選択することになっています [SRC[>>5]]。
[41] 次の6種類の構文が示されています [SRC[>>5]]。
[FIG(list)[
- [42] [CODE[[VAR[YYYY]]
- [43] [CODE[[VAR[YYYY]]-[VAR[MM]]]]
- [44] [CODE[[VAR[YYYY]]-[VAR[MM]]-[VAR[DD]]]]
- [45] [CODE[[VAR[YYYY]]-[VAR[MM]]-[VAR[DD]]T[VAR[hh]]:[VAR[mm]][VAR[TZD]]]]
- [46] [CODE[[VAR[YYYY]]-[VAR[MM]]-[VAR[DD]]T[VAR[hh]]:[VAR[mm]]:[VAR[ss]][VAR[TZD]]]]
- [47] [CODE[[VAR[YYYY]]-[VAR[MM]]-[VAR[DD]]T[VAR[hh]]:[VAR[mm]]:[VAR[ss]].[VAR[s]][VAR[TZD]]]]
]FIG]
[48] ここで、各要素は次のような値です [SRC[>>5]]。
[FIG(list)[
- [VAR[YYYY]] = [[年]] (4桁[[数字]])
- [VAR[MM]] = [[月]] (2桁[[数字]]、 [CODE[01]] が[[1月]])
- [VAR[DD]] = [[日]] (2桁[[数字]]、 [CODE[00]] - [CODE[31]])
- [VAR[hh]] = [[時]] (2桁[[数字]]、 [CODE[00]] - [CODE[23]])
- [VAR[mm]] = [[分]] (2桁[[数字]]、 [CODE[00]] - [CODE[59]])
- [VAR[ss]] = [[秒]] (2桁[[数字]]、 [CODE[00]] - [CODE[59]])
- [VAR[s]] = [[秒の小数部]] (1桁[[以上]]の[[数字]]、採用する仕様の側で最小桁数と最大桁数
([[∞]]可) を設定可能)
- [VAR[TZD]] = [[時間帯]]
-- [CODE[Z]] = [[UTC]]
-- [[時差]]
--- [CODE[+[VAR[hh]]:[VAR[mm]]]] = [[UTC]] より進んでいる
--- [CODE[-[VAR[hh]]:[VAR[mm]]]] = [[UTC]] より遅れている
-- 採用する仕様の側で一方または両方を認めるべき
]FIG]
[50] 各要素の詳細な意味については、 [[ISO 8601]] に委ねているためか、
特に記述がありません。 [[ISO 8601]] が採用する仕様の側に決定を委ねている[[グレゴリオ改暦]]以前の[[年]]の解釈などは、
[[W3C-DTF]] でどう処理するべきかはっきりしません。
[[年]] [CODE[0000]] も禁止 (も許可も) されていません。
[49] [CODE[T]] や [CODE[Z]] の[[大文字]]と[[小文字]]について明記されていませんが、
特に規定がないことから[[大文字]]でなければならないと解釈するのが一般的です。
* 閏秒
[18] この[[日付形式]]は[[閏秒]]に対応していません。
* 解釈
[51] [[W3C-DTF]] であると期待される文字列をどう解釈するべきかについては、
まったく規定がありません。
[EG[
[52] 例えば [CODE[2015-02-31]] のような存在しない[[日付]]を与えられた時、
どう解釈するべきかは不明です。
]EG]
* 文脈
[12]
古い [[HTML]] 仕様である [[HTML4]] は[[引用規格]]としてこの仕様を参照していますが、
それを引いている [CODE(SGML)@en[%Datetime;]]
型の定義では[[秒]]までの書式と同じものが (参照ではなく)
陽に定義されています。
[SEE[ 当時の規定の詳細は [CODE[%Datetime;]] を、現在の規定は [[HTMLの日時形式]]を参照 ]]
[13]
[[DCMI]] [[メタデータ]]で定義されている語
[CODE@en[[[date]]]] は、この仕様の[[日]]までの書式を推奨しています。
語 [CODE@en[[[W3CDTF]]]] はこの仕様の書式を表すとされています。
(が、どの書式なのか、あるいは全部なのかは、よくわかりません。)
[24] [[RSS 1.0]] でよく用いられる [CODE(XMLe)@en[[[dc:date]]]] [[要素]]の値は [[W3C-DTF]]
とされています [SRC[>>25]]。
どの形式なのか、すべてなのかは明記されていませんが、一般的には、また仕様暑中の例示では、
[[時間帯]]まで含まれた形式が使われています。
[57] その他 [[RDF語彙][語彙 (RDF)]]が採用していることがあります。
[61]
[[RKMSの日時形式]]は
[[W3C-DTF]]
でした。
* Date construct (Atom 0.3)
[15] かつて用いられていた [[Atom 0.3]] では、 [DFN[[[Date construct]]]] [SRC[>>22]]
は[[内容]]が「[[W3C]] Date-Time string」である[[要素]]とされていました。
** 内容
[16] [[要素]]によっては、[[時間帯]]が示されている[['''べき''']]、
示されるなら [[UTC]] でなければ[['''ならない''']]といった制約が更に課されています。
** 関連
[17] [[Atom 0.3]] の改訂版に当たる [[Atom 1.0]] は [[Date construct]] に [[RFC 3339の日付形式]]と [[XML Schemaの日付形式]]を採用しています。
[SEE[ [[XML Schemaの日付形式]] ]]
*SMIL の日付形式
[19] [[SMIL]] はいくつかの[[日時]]や[[時間]]の表現方法を定義しています
[SRC[>>20]] が、
[[日時]]や[[日付]]や[[時刻]]に関しては、 [[W3C-DTF]] に[RUBYB[基づいている]@en[based upon]]とされています。
[[W3C-DTF]] で定義されている書式の1つである[[日付]] + [[時刻]] ([[秒の小数部]]まで表現可能) + [[時間帯]]の完全形のほかにも、
[[日付]]や[[時刻]]や[[時間帯]]を省略した書式も定義されています。
;; [26] [[W3C-DTF]] は [[Informative References]] の1つとして挙げられているに過ぎず、
それに「基づいた」構文を [[SMIL]] 側で独自に規定しています。
[21] [[閏秒]]に対応していないのも同じです。
* 関連
[9]
'''ISO 8601 との関係''':
この仕様で規定されている書式は、 [[ISO 8601]]:1988
に基づく[[プロファイル]]です。しかし、 [[ISO 8601]]:2003
から見ると古い書式になっています。
[10]
'''XML Schema との関係''':
[[XML Schema]] では、 [CODE(XML)@en[[[dateTime]]]] や
[CODE(XML)@en[[[gYear]]]]
などこの仕様で規定されている書式に相当する[[データ型]]が定義されています。
この仕様についての [[W3C]] [[スタッフ]]の注釈
([[XML Schema]] [[勧告]]後のもの) によれば、
この仕様は既に参照している他の仕様があるのでそのまま残してあるそうですが、
今後は [[XML Schema]] の[[データ型]]を参照するべきなのでしょう。
[11]
'''RFC 3339 との関係''':
[[秒]]までの書式は、 [[RFC 3339の日付形式]]とほぼ同じです。
[34] [[EDTF]] は [[W3C-DTF]] とも互換性があると主張しています。
[56]
[[ODRF]] は [[W3C-DTF]] を基にしていると謳っています。
ただし [[ODRF]] が使っているのは [[W3C-DTF]] の一部だけです。
* 例
- [2] [CODE(example)[2003-01-02]]
* 歴史
[39] [CODE[draft-newman-datetime]] を参考にした [SRC[>>5]] とされています。
[CODE[draft-newman-datetime]] は後の [[RFC 3339]] です。
[58] かつては
<http://www.w3.org/TR/1998/NOTE-datetime>
でもアクセスできたようですが、現在では [CODE[404]] です。
[TIME[2019-06-11T00:44:05.000Z]]
* メモ
[6]
W3C-DTF は人間が読む文章でも使うべきものだと誤解してる連中が少なからずいると見える。
[[ISO 8691]] も W3C-DTF も [[RFC 3339]] も、機械処理用の記述形式でしかないのに。
(確かに W3C-DTF Note にはそんなこと一言も書いてない。自明だから書かなかったのかな。)
人間が読むための形式は言語や地域や主義主張や個人の趣味で色々で、それを統一しようとするのは愚かなこと。
[[W3C]] がそんなことするわけないじゃん。
([[名無しさん]] [WEAK[2004-09-04 02:52:38 +00:00]])
[7]
というかよく読めば単なる Member Submission で、 W3C が規定したわけでもなんでもないのに、誰が [Q[W3C-DTF]] なんて言い出したのでしょうね?
ちなみに W3C スタッフのコメントは
[CITE[Comment on Date and Time Formats Submission]] <http://www.w3.org/Submission/1997/14/Comment>
最近になって W3C は WG からの公式な W3C 文書と Member/Team Submission を区別するようになりましたけど、時既に遅すぎといいますか、なんと申し上げますか。
([[名無しさん]])
[14]
>>6 [[W3C-DTF]]は人間にも読みやすくていいとか主張している人がいますけど、明らかに不自然な[Q@en[T]]が入る書式のどこがよいのでしょうかねぇ。
[23] [CITE@en[OpenID Authentication 1.1]]
( ([TIME[2007-10-08 22:03:49 +09:00]] 版))
<http://openid.net/specs/openid-authentication-1_1.html#anchor33>
[FIG(quote)[
[FIGCAPTION[
[32] ([TIME[2016-03-25 14:44:38 +09:00]] 版)
<http://iss.ndl.go.jp/rss/ndlopac/index.xml>
]FIGCAPTION]
> <dcterms:issued xsi:type="dcterms:W3CDTF">2016</dcterms:issued>
]FIG]
[FIG(amazon)[
Web技術
]FIG]
[FIG(quote)[
[FIGCAPTION[
[35] [CITE@ja[Echo【bitFlyer】]]
([TIME[2017-05-10 18:44:42 +09:00]])
<https://bitflyer.jp/ja/corporate/echo/api>
]FIGCAPTION]
> リクエスト時のパラメータや、レスポンスデータ内において、日時を表現するために ISO 8601(W3C-DTF)形式(※2)の文字列を用います。タイムゾーンは JST で固定。フォーマットは“yyyy-mm-dd hh:mm:ss”。
]FIG]
[38] [[W3C-DTF]] には >>35 のような[[時間帯]]の指定を省略した形式は定義されていないのですが...
[FIG(quote)[
[FIGCAPTION[
[36] [CITE[Top-level Element: <originInfo> (MODS Ver. 3 User Guidelines: Metadata Object Description Schema, Library of Congress)]]
([TIME[2013-08-15 04:37:12 +09:00]])
<https://www.loc.gov/standards/mods/userguide/origininfo.html>
]FIGCAPTION]
> Use of the encoding attribute is recommended. If an exact year is known, the DLF/Aquifer guidelines recommend representing the value using the W3CDTF encoding, which also allows month and day to be specified if known. The W3CDTF encoding is a profile of the more flexible ISO 8601 standard. Using W3CDTF ensures a more predictable format for dates. The DLF/Aquifer guidelines recommend using ISO 8601 encoding only when a date cannot be expressed using W3CDTF.
]FIG]
[FIG(quote)[
[FIGCAPTION[
[37] [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]
> w3cdtf – This value identifies dates following the W3C profile of ISO 8601, Date and Time Formats, that specifies the extended format for dates using the pattern: YYYY-MM-DD. If hours, minutes, and seconds are also needed the following pattern is used: YYYY-MM-DDThh:mm:ss.
]FIG]
[FIG(quote)[
[FIGCAPTION[
[53] [CITE[XLIFF Version 2.0]]
([TIME[2014-08-06 01:00:00 +09:00]])
<http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/xliff-core-v2.0-os.html#ctr_datetime>
]FIGCAPTION]
> Value description: Date in one of the formats defined in '''['''NOTE-datetime''']'''.
> <ctr:revision author="system" datetime="2013-05-15T10:00:00+8:00"
]FIG]
[54] >>53 の例示の[[日時]]は [[W3C-DTF]] のいずれとも違う気がしますが...
[[XML Schema]] の定義がありますが、なぜか [CODE[xs:dateTime]] は使っていません。
[FIG(quote)[
[FIGCAPTION[
[55] [CITE@ja[SVF PDF Archiver Web APIリファレンス]]
([TIME[2017-05-18 00:51:38 +09:00]])
<https://manual.wingarc-support.com/manual/svf/spa93apiref/?pageId=p55980886>
]FIGCAPTION]
> ISO8601 RFC3339 W3CDTF(日付と時刻をTでつなげる)に準拠した文字列(例 "2016-11-22T11:18:43.933+0900")で出力します。
]FIG]
[60] [CITE@en[DCMI: DCMI Metadata Terms]], [TIME[2021-01-11T08:57:10.000Z]], [TIME[2021-01-13T09:19:08.270Z]] <https://www.dublincore.org/specifications/dublin-core/dcmi-terms/#http%3A%2F%2Fpurl.org%2Fdc%2Fterms%2FW3CDTF>