[90] LDML は週のバリエーションの記述の方法を定めています。 CLDR は LDML を使って各ロケールにおける週の定義を提供しています。
[3] UAX #35 (LDML) が構文を定め、 CLDR がロケール定義を提供し、 ICU が実装するという関係になっています。 その母体となる標準化団体が Unicode Consortium です。
[65]
LDML
のロケールデータファイル用のXML要素として、
day
要素があります。
type
属性が必須です。
その内容は PCDATA です。
>>64
[66]
day
要素の type
属性は列挙属性で、
sun
,
mon
,
tue
,
wed
,
thu
,
fri
,
sat
を指定できます。
>>64
曜日を表し、それぞれ日曜日、月曜日、... 土曜日です。
要素内容が当該ロケールにおいて指定された曜日を表す文字列であることを意味します。
[67] 他の構造には数値を使っていますが、曜日に短い文字列を使っているのは、 普遍的に受け入れられている数値表現がないため、 と説明されています。 >>64
[6]
LDML のロケールデータファイル用の XML要素として、
weekData
要素があります。
その内容は、
minDays
,
firstDays
,
weekendStart
,
weekEnd
,
weekOfPreference
各要素で、この順序で、各0個以上含められます。
>>1
[61]
weekData
要素は、
supplementalData
要素に含められます。
>>63
[7]
minDays
は強制空要素で、
count
属性と
territories
属性が必須です。
>>1
[8]
firstDay
,
weekendStart
,
weekendEnd
はすべて強制空要素で、
day
属性と
territories
属性が必須です。
>>1
[11]
minDays
,
firstDay
,
weekendStart
,
weekendEnd
各要素の
territories
属性は、
NMTOKENS
を指定できます。
>>1
要素は領土ごとの情報を表しており、
territories
属性値の各名前字句が該当する領土を表しています。
同じ情報を持つ領土は1つの要素にまとめることができ、
別の情報を持つ領土は別の要素で表します。
領土 001
の要素によって既定値の情報を記述できます
>>1。
[9]
minDays
要素の
count
属性は列挙属性で、 1
から 7
までのASCII数字を指定できます。
>>1
日数を表します。
年や月の最初の週の決定方法を指定するものです (>>15)。
[10]
firstDay
,
weekendStart
,
weekendEnd
各要素の
day
属性は列挙属性で、
sun
,
mon
,
tue
,
wed
,
thu
,
fri
,
sat
を指定できます。
>>1
曜日を表し、それぞれ日曜日、月曜日、... 土曜日です。
週初 (>>27) や週末 (>>30) を指定するものです。
[12]
weekOfPreference
要素は強制空要素で、
locales
属性と
ordering
属性が必須です。
>>1
[13]
weekOfPreference
要素の
locales
属性は、
NMTOKENS
を指定できます。
>>1
要素はロケールごとの情報を表しており、
locales
属性値の各名前字句が該当するロケールを表しています。
同じ情報を持つロケールは1つの要素にまとめることができ、
別の情報を持つロケールは別の要素で表します。
ロケール und
の要素によって既定値の情報を記述できます
>>1。
[14]
weekOfPreference
要素の
ordering
属性は、
NMTOKENS
を指定できます。
>>1
週の表記法の優先順位を表します (>>52)。
[24] LDML は七曜があてられた7日間の期間を週としているようです。 週と七曜は途切れず繰り返される前提としているようです。
[25]
7日以外の週や、週外日のようなものは扱えません。
[91]
グレゴリオ暦以外との併用も想定されています。
>>69
しかしどの程度までカバーしているのかはよくわかりません。
例えば週外日がある暦と minDays
のような指定は整合しませんが、特に何の規定もありません。
また、
同じロケールで複数の暦法が併用されるときの挙動も明確ではありません。
[27]
カレンダー表示の週の最初の日として表示するべきなのが、
firstDay
で指定された曜日です。
>>1
[86] 日付書式パターンにおいて暦の計算上の週の最初の日にも使います。 >>85
[29] 週の日の番号付けは、 カレンダー表示の週の最初の日を 1 として数えていきます。 将来は別途指定できるようにするかもしれないとされています。 >>1
[28] 週末の後の最初の日、週の最初の労働日は、 週末から決定するべきものです。 必ずしもカレンダー表示の週の最初の日と同じとは限りません。 >>1
[34] CLDR は本段落執筆時点では次のようにしています。 >>2
[42]
既定値を表す 001
や、欧州などが月曜日になっています。
日本を含むアジアや、
米国を含む米大陸方面などが日曜日になっています。
アラブ諸国などが土曜日に、
モルディブが金曜日になっています。
<firstDay day="sun" territories="GB" alt="variant" references="Shorter Oxford Dictionary (5th edition, 2002)"/>
[40] alt
属性と references 属性は UAX #35
の DTD 片にない属性で意味は未詳です。
文言から推測すると、
英国は一般に月曜日始まりのところ、
日曜日始まりとすることもあって、
Shorter Oxford Dictionary がその出典である、
といったところでしょうか。
[41] なぜ英国のこの1例だけ別案が示されているのか不思議です。
[30]
週末は
weekendStart
で指定された曜日から
weekendEnd
で指定された曜日までです。
[31] 週末が何を意味するかは国によります。 一般には小売業以外のほとんどが休業する時期です。 >>1
[32] 時刻も指定できる >>85、 時刻は「well-recognized part of the day」でなければ指定するべきではない >>1 とされますが、 現行 LDML 仕様の DTD 片にはそのような指定がそもそも存在していません。過去には存在していたのでしょうか。 それとも他の規定が混入したのでしょうか。
weekendStart
の既定値は sat
、
weekendEnd
の既定値は sun
とされます。
>>1
しかし
CLDR
は 001
領土の値を明示的に定義しています。
この既定値は何のためのものでしょうか。
CLDR 以外の用途を想定したのでしょうか?
でも不思議なことに他の要素には既定値がなく、ここでだけ規定されています。[45] CLDR は本段落執筆時点では次のようにしています。 >>2
[43] LDML の仕様では領土単位でしか記述できません。 領土以外のロケールの要素による違いや、 位相差、個人差は扱えません。
[52]
ロケールごとの週の指定の種類の優先順位は、
weekOfPreference
要素で記述されます。
>>1
[53] 次の4種類の値があります。 >>4 LDML の属性値として1つ以上、それぞれを高々1つ記述されることが求められると思われます。
weekOfYear
:
「week 15 of 2016」のような表記です。
具体的にはロケールの
<dateFormatItem id='yw'>
の形式に相当します。weekOfMonth
:
「week 2 of April」
「2nd week of April」
のような表記です。
具体的にはロケールの
<dateFormatItem id='MMMMW'>
の形式に相当します。weekOfDate
:
「the week of April 11, 2016」
のような表記です。
具体的にはロケールの
<field type="week"><relativePeriod>
の形式に相当します。
最初の日、労働日、
週全体の範囲、労働週の範囲などで表現できます。weekOfInterval
:
「the week of April 11, 2016」
のような表記です。
具体的にはロケールの
<field type="week"><relativePeriod>
の形式に相当します。
最初の日、労働日、
週全体の範囲、労働週の範囲などで表現できます。[58] CLDR は本段落執筆時点では次のようにしています。 >>2
[59] このデータがどれだけ信頼できるかというと、怪しい気がします。 週の表記は年月日ほど安定しておらず (優先度2位以下を持つロケールが多いことがそれを証明しています)、 国の単位で週はこう表記するべき、 と決定できるところがまず少ないのではないかと疑われます。
[60]
ja
では weekOfDate が第1位、 weekOfMonth が第2位になっています。
日本国の日本語では、
確かに「何月何日の週」のような言い方はしますし、
「何月第何週」のような言い方もします。
でも前者が優勢かというと、
自信を持って肯定するのも否定するのも難しいのではないでしょうか。
どちらかというと
「何月第何週」
の方が定期スケジュールの記述には多い気がします。
スケジュール確認の場面では
「何月何日の週」
が多い気がします
(「何月第何週」の安定した定義がないと理解されているからかもしれません)。
出来事や予定を一覧にする場面では、
「何月何日から何月何日の週」
の表記も見かけます
(がこのデータには weekOfInterval がないですね)。
[68] 併記という選択肢は記述できません。
[15]
年の週の計算における年の最初の週の決定や、
月の週の計算における月の最初の週の決定では、
minDays
で指定された値を使って、
その日数以上が含まれる週を年や月の週、
それに満たない週を前の年や月の週とします。
>>1, >>85
[44] LDML の仕様書では明確ではありませんが、 週初の日からの7日間が週とみなされるのでしょうか。
[16] CLDR は本段落執筆時点では次のようにしています。 >>2
[19]
1 は1日でも含まれれば新しい年や月に属することを意味します。
既定値を表す 001
や、アメリカ合衆国などがこちらになっています。
[20] 4 は4日、つまり7日ある週の過半数が含まれれば新しい年や月に属することを意味します。 欧州の国の多くがこちらになっています。 ISO週暦における週年と同じ決め方です。
[21] LDML は 2, 3, 5, 6, 7 も認めていますが、現在の CLDR にはそのような領土は登録されていません。
[22] LDML の仕様では所属年の決定方法と所属月の決定方法は変えられません。 (月が年に含まれるようにするためでしょうか。)
[23] LDML の仕様では「前の月の最終週かつ次の月の最初の週である週」や 「前の月の最終週 (7日に満たない) と次の月の最初の週 (7日に満たない)」 のようなものを扱えません。
[26] LDML の仕様では領土単位でしか記述できません。 領土以外のロケールの要素による違いや、 位相差、個人差は扱えません。
[88] CLDR で記述されたものがその国の実際の慣習を正確に記述できているかというと、 そうとも限らないでしょう。 明確な定めがなく曖昧に運用されている地域も少なくないのではないでしょうか。
[89] 7 の地域が1つもないのは意外ですね。 実際にはそのような数え方 (週全体が新年に収まる最初の週を第1週とする) もあるみたいです。 CLDR 調べによれば国単位で最も優勢な数え方がそれである、 という国は存在していない、という程度に理解するべきでしょう。
[83] 日付書式パターンでは、年の週では年の最初、 月の週では月の最初を 1 の週とし、 2、 3 と数えていきます。 >>83
[70] LDML の定める日時書式記述方式である日付書式パターンには、 週暦の要素を指定する方法があります。
[71]
Y
は年の週に基づく暦における年の数値を表します。
年の変化は週の境界で発生します。
>>69
[72]
Y
を複数個並べると、最低桁数になります。例えば
YYYY
は0埋めして最低4桁の数値で表すことを意味します。
>>69
[73]
暦年を表す y
とは違う値になることがあります >>69。
ところが誤って利用するケースが後を絶ちません。
y
と Y
のような紛らわしい割り当て方をしたのでしょうか。
間違いやすいことは明白なのに。
[75] グレゴリオ暦以外の暦法でも使うことができます。 >>69
[77]
ww
は0埋めして2桁の数値で表すことを意味します。
>>69
[79]
F
は
Day of Week in Month
の数値を表します。
>>69
[82] LDML では文字列の長さにより Narrow (T), Short (Tu), Abbreviated (Tue), Wide (Tuesday) の種別があります。 また、 一般の日時表示を想定した format と、 カレンダー等を想定した stand-alone があります。
[74]
ISO 8601 で定義される ISO year-week calendar
において Y
と w
とを組み合わせて使うと説明されています。
>>69
グレゴリオ暦で週初が月曜日なら、
ISO週暦と同等のものを表すことになります。
[94] 不思議なことに週年はあるのに週ベースの月を表す記号がありません。 「何年第何週」 は記述できるのに、 「何年何月第何週」 は記述できません。