[29] [DFN[月日]]は、[[月]]と[[日]]の[[組]]です。

* 月日 (HTML)

[1] [[HTML]] における[DFN[[RUBYB[[[月日]]]@en[yearless date]]]]は、[[グレゴリオ暦]]における[[月]]と[[日]]を表すものです。
ただし[[月]]と[[日]]は特定の[[年]]には関連付けません。 [SRC[>>2]]

** 仕様書

[REFS[
- [2] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2014-05-05 21:57:42 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#concept-yearless-date>
]REFS]

** 構文

[3] [DFN[[RUBYB[[[妥当な月日]]]@en[valid yearless date]]]]とは、[[月]] [VAR[month]] [[日]] [VAR[day]]
を表す次のような[[文字列]]です [SRC[>>2]]。
[FIG[
= [4] 省略可能な [CODE[--]]
= [5] [[月]] [VAR[month]] を表す [[ASCII数字]]2桁
= [6] [CODE[-]]
= [7] [[日]] [VAR[day]] を表す [[ASCII数字]]2桁
]FIG]

[8] ここで、 >>5 は1から12までの[[数]]のいずれか、 >>7 は1から任意の[[閏年]]の >>5 の[[月]]の[[日の数]]までの[[数]]のいずれかでなければなりません
[SRC[>>2]]。

[FIG(railroad)[
= ?
== [CODE[--]]
= [CODE[01]] ... [CODE[12]]
= [CODE[-]]
= [CODE[01]] ... [CODE[31]]
]FIG]

** 構文解析

[9] [DFN[[RUBYB[[[月日文字列の構文解析]]]@en[parse a yearless date string]]]]や[DFN[[RUBYB[[[月部品の構文解析]]]@en[parse a yearless date component]]]]は、
入力が >>3 や >>8 の制約を満たす[[文字列]]ならその[[月]]と[[日]]を返し、
そうでなければ失敗します [SRC[>>2]]。

** 閏年

[10] [[月日]]は、[[年]]に依存しない値です。[[2月]]の[[日]]として認められる範囲は、 >>8
の通り、29までとなっています。

** 暦法

[11] [[月日]]は、[[グレゴリオ暦]]の[[月日]]を表す [SRC[>>2]] と定義されています。
[[年]]を含まないため[[グレゴリオ暦]]とだけ説明されているようですが、
文脈によっては[[先発グレゴリオ暦]]の[[月日]]を表していると解釈されることもあるでしょう。

** 用法

[12] [CODE(HTMLe)@en[[[time]]]] [[要素]]で用いられます。

* 月と日からの年の推定

[13] 時折、[[日付]]の表記に[[月]]と[[日]]だけが使われ、[[年]]が省略されることがあります。

[14] [[月]]と[[日]]だけから[[年]]を確定することは不可能です。
[[月]][VAR[月]]と[[日]][VAR[日]]と基準となる[[日付]][VAR[基準日]] (例えばその[[文書]]の出版日など) から[[年]]を推定する方法は、色々考えられそうです。

[15] 例えば、
[FIG(steps)[
= [16] [VAR[日付1]]を、 ([VAR[基準日]]の[F[年]] - 1, [VAR[月]], [VAR[日]]) の[[日付]]に設定します。
= [17] [VAR[日付2]]を、 ([VAR[基準日]]の[F[年]], [VAR[月]], [VAR[日]]) の[[日付]]に設定します。
= [18] [VAR[日付3]]を、 ([VAR[基準日]]の[F[年]] + 1, [VAR[月]], [VAR[日]]) の[[日付]]に設定します。
= [19] [VAR[距離1]]を、 | [VAR[日付1]] - [VAR[基準日]] | に設定します。
= [20] [VAR[距離2]]を、 | [VAR[日付2]] - [VAR[基準日]] | に設定します。
= [21] [VAR[距離3]]を、 | [VAR[日付3]] - [VAR[基準日]] | に設定します。
= [22] [VAR[最小]]を、[VAR[距離1]]、[VAR[距離2]]、[VAR[距離3]]のうち[[最小]]のものに設定します。
= [23] [VAR[最小]] = [VAR[距離2]]なら、
== [24] [VAR[日付2]]を返します。
= [25] それ以外で、[VAR[最小]] = [VAR[距離1]]なら、
== [26] [VAR[日付1]]を返します。
= [27] それ以外なら、
== [28] [VAR[日付3]]を返します。
]FIG]

;; [TIME[2月29日][--02-29]]の取扱に注意。

* 特別な月日

[30] 
[FIG(short list)[
- [[1月0日]]
- [[2月29日]]
- [[2月30日]]
- [[3月0日]]
]FIG]

* 文脈

[FIG(list)[ [32] [[データ型]]としての[[月日]]が使われることがある場所

- [34] [[誕生日]] ([[生年月日]]のうち[[月日]])
- [33] 毎年の[[記念日]]
- [35] 毎年実施するべき予定

]FIG]

;; [36] [[日時表示]]に於いて同年であるなどの理由で[[年]]が省略されるものは示していません。



* メモ