/
854.txt
267 lines (218 loc) · 8.24 KB
/
854.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
* 仕様書
[REFS[
- [1]
[CITE[Unicode Locale Data Markup Language ([[LDML]]) Part 4: Dates]], [TIME[2022-04-06T14:24:49.000Z]], [TIME[2022-07-11T08:01:56.548Z]] <https://unicode.org/reports/tr35/tr35-dates.html#Week_Data>
- [2]
[CITE@en[cldr/supplementalData.xml at latest · unicode-org/[[cldr]]]], [TIME[2022-07-11T08:03:29.000Z]] <https://github.com/unicode-org/cldr/blob/latest/common/supplemental/supplementalData.xml>
]REFS]
[3]
[[UAX #35]] ([[LDML]]) が構文を定め、
[[CLDR]] が[[ロケール]]定義を提供し、
[[ICU]] が実装するという関係になっています。
その母体となる[[標準化団体]]が [[Unicode Consortium]] です。
;; [4] [CITE[[[The Unicode Standard]]]]
本体と同じ[[標準化団体]]ですが、
仕様としては別物です。
[5] 実装はそれ以外にもあるかもしれません。
[SEE[ [[LDML]], [[CLDR]], [[ICU]] ]]
* LDML 要素
[6]
[[LDML]] の[[ロケール]]データファイル用の [[XML要素]]として、
[DFN[[CODE[weekData]]]]
があります。
その[[内容]]は、
[CODE[minDays]],
[CODE[firstDays]],
[CODE[weekendStart]],
[CODE[weekEnd]],
[CODE[weekOfPreference]]
各[[要素]]で、この順序で、各0個[[以上]]含められます。
[SRC[>>1]]
-*-*-
[7]
[DFN[[CODE[minDays]]]]
は[[強制空要素]]で、
[CODE[count]] [[属性]]と
[CODE[territories]] [[属性]]が[[必須]]です。
[SRC[>>1]]
[8]
[DFN[[CODE[firstDay]]]],
[DFN[[CODE[weekendStart]]]],
[DFN[[CODE[weekendEnd]]]]
はすべて[[強制空要素]]で、
[CODE[day]] [[属性]]と
[CODE[territories]] [[属性]]が[[必須]]です。
[SRC[>>1]]
[11]
[CODE[minDays]],
[CODE[firstDay]],
[CODE[weekendStart]],
[CODE[weekendEnd]]
各[[要素]]の
[DFN[[CODE[territories]]]] [[属性]]は、
[CODE[NMTOKENS]]
を指定できます。
[SRC[>>1]]
[[要素]]は[[領土]]ごとの情報を表しており、
[CODE[territories]]
[[属性値]]の各[[名前字句]]が該当する[[領土]]を表しています。
同じ情報を持つ[[領土]]は1つの[[要素]]にまとめることができ、
別の情報を持つ[[領土]]は別の[[要素]]で表します。
[[領土]] [CODE[001]] の[[要素]]によって[[既定値]]の情報を記述できます
[SRC[>>1]]。
[9]
[CODE[minDays]] [[要素]]の
[DFN[[CODE[count]]]] [[属性]]は[[列挙属性]]で、 [CODE[1]] から [CODE[7]]
までの[[ASCII数字]]を指定できます。
[SRC[>>1]]
[[日]]数を表します。
[[年]]や[[月]]の最初の[[週]]の決定方法を指定するものです (>>15)。
[10]
[CODE[firstDay]],
[CODE[weekendStart]],
[CODE[weekendEnd]]
各[[要素]]の
[DFN[[CODE[day]]]] [[属性]]は[[列挙属性]]で、
[CODE[sun]],
[CODE[mon]],
[CODE[tue]],
[CODE[wed]],
[CODE[thu]],
[CODE[fri]],
[CODE[sat]]
を指定できます。
[SRC[>>1]]
[[曜日]]を表し、それぞれ[[日曜日]]、[[月曜日]]、... [[土曜日]]です。
[[週初]] (>>27) や[[週末]] (>>30) を指定するものです。
-*-*-
[12]
[DFN[[CODE[weekOfPreference]]]]
[[要素]]は[[強制空要素]]で、
[CODE[locales]] [[属性]]と
[CODE[ordering]] [[属性]]が[[必須]]です。
[SRC[>>1]]
[13]
[CODE[weekOfPreference]]
[[要素]]の
[DFN[[CODE[locales]]]] [[属性]]は、
[CODE[NMTOKENS]]
を指定できます。
[SRC[>>1]]
[[要素]]は[[ロケール]]ごとの情報を表しており、
[CODE[locales]]
[[属性値]]の各[[名前字句]]が該当する[[ロケール]]を表しています。
同じ情報を持つ[[ロケール]]は1つの[[要素]]にまとめることができ、
別の情報を持つ[[ロケール]]は別の[[要素]]で表します。
[[ロケール]] [CODE[und]] の[[要素]]によって[[既定値]]の情報を記述できます
[SRC[>>1]]。
[14]
[CODE[weekOfPreference]]
[[要素]]の
[DFN[[CODE[ordering]]]] [[属性]]は、
[CODE[NMTOKENS]]
を指定できます。
[SRC[>>1]]
* 週
[24]
[[LDML]] は[[七曜]]があてられた7日間の[[期間]]を[[週]]としているようです。
[[週]]と[[七曜]]は途切れず繰り返される前提としているようです。
[25]
7日以外の[[週]]や、[[週外日]]のようなものは扱えません。
[SEE[ [[週]] ]]
* 週初と週末
[27]
[[カレンダー]]表示の[[週]]の最初の[[日]]として表示するべきなのが、
[CODE[firstDay]]
で指定された[[曜日]]です。
[SRC[>>1]]
[29]
[RUBYB[週の日の番号付け][day-of-week numbering]]は、
[[カレンダー]]表示の[[週]]の最初の[[日]]を [N[1]]
として数えていきます。
将来は別途指定できるようにするかもしれないとされています。
[SRC[>>1]]
[28]
[[週末]]の後の最初の[[日]]、[[週]]の最初の[RUBYB[労働日][work day]]は、
[[週末]]から決定するべきものです。
必ずしも[[カレンダー]]表示の[[週]]の最初の[[日]]と同じとは限りません。
[SRC[>>1]]
[30]
[[週末]]は
[CODE[weekendStart]]
で指定された[[曜日]]から
[CODE[weekendEnd]]
で指定された[[曜日]]までです。
[31]
[RUBYB[[[週末]]][weekend]]が何を意味するかは[[国]]によります。
一般には小売業以外のほとんどが休業する時期です。
[SRC[>>1]]
;; [32]
[[時刻]]は「well-recognized part of the day」でなければ指定するべきではない
[SRC[>>1]] とされますが、 現行 [[LDML]] 仕様の [[DTD]]
にはそのような指定がそもそも存在していません。過去には存在していたのでしょうか。
それとも他の規定が混入したのでしょうか。
;; [33]
[[LDML]]
では
[CODE[weekendStart]] の既定値は [CODE[sat]]、
[CODE[weekendEnd]] の既定値は [CODE[sun]] とされます。
[SRC[>>1]]
しかし
[[CLDR]]
は [CODE[001]] [[領土]]の値を明示的に定義しています。
この[[既定値]]は何のためのものでしょうか。
[[CLDR]] 以外の用途を想定したのでしょうか?
でも不思議なことに他の[[要素]]には[[既定値]]がなく、ここでだけ規定されています。
* 年の週と月の週
[15]
[RUBYB[年の週の計算][week-of-year calculation]]における年の最初の週の決定や、
[RUBYB[月の週の計算][week-of-month calculation]]における月の最初の週の決定では、
[CODE[minDays]] で指定された値を使って、
その[[日]]数[[以上]]が含まれる[[週]]を[[年]]や[[月]]の[[週]]、
それに満たない[[週]]を前の[[年]]や[[月]]の[[週]]とします。
[SRC[>>1]]
[16]
[[CLDR]] は本段落執筆時点では次のようにしています。
[SRC[>>2]]
- [17] [[領土]] [[001]] GU UM US VI は [N[1]]
- [18] [[領土]]
AD AN AT AX
BE BG
CH CZ
DE DK
EE ES
FI FJ FO FR
GB GF GG GI GP GR
HU
IE IM IS IT
JE
LI LT LU
MC MQ
NL NO
PL PT
RE RU
SE SJ SK SM
VA は [N[4]]
[19]
[N[1]] は1日でも含まれれば新しい[[年]]や[[月]]に属することを意味します。
既定値を表す [CODE[001]] や、[[アメリカ合衆国]]などがこちらになっています。
[20]
[N[4]] は4日、つまり7日ある[[週]]の[[過半数]]が含まれれば新しい[[年]]や[[月]]に属することを意味します。
[[欧州]]の[[国]]の多くがこちらになっています。
[[ISO週暦]]における[[週年]]と同じ決め方です。
[21]
[[LDML]] は [N[2]], [N[3]], [N[5]], [N[6]], [N[7]]
も認めていますが、現在の [[CLDR]] にはそのような[[領土]]は登録されていません。
([N[7]] の地域がないのは意外ですね。)
[22]
[[LDML]] の仕様では所属年の決定方法と所属月の決定方法は変えられません。
(月が年に含まれるようにするためでしょうか。)
[23]
[[LDML]] の仕様では「前の月の最終週かつ次の月の最初の週である週」や
「前の月の最終週 (7日に満たない) と次の月の最初の週 (7日に満たない)」
のようなものを扱えません。
[26]
[[LDML]] の仕様では[[領土]]単位でしか記述できません。
[[領土]]以外の[[ロケール]]の要素による違いや、
[[位相]]差、個人差は扱えません。
* メモ