日付を扱うMTタグは閏年を考慮しているのか
MTタグの処理で閏年が気になる場合
例えば、案件でニュース系コンテンツのあるウェブサイトを扱っていて、ニュース一覧でに現在日(MTが最後に再構築した日)からxx日以内の記事に「NEW」マークつけろ、とかいう要件があるとする。
これをCMSテンプレートで実装する時に、現在日 - 記事の日付との"日単位"の差分を求めたい。
ただ、気になるのが"閏年"。MTタグのレベルではどの程度対応してるのか。
ちなみに前提として、世間一般で使われているのは「グレゴリオ暦」。
日本もグレゴリオ暦の計算法に準じる形で閏年を計算するよう、法令で定められている(明治三十一年勅令第九十号(閏年ニ関スル件))。
具体的な閏年の計算法は、次の通り(※1より引用)。
(1)西暦年号が4で割り切れる年をうるう年とする。 (2)(1)の例外として、西暦年号が100で割り切れて400で割り切れない年は平年とする。
前述を踏まえて、MTタグの動作がグレゴリオ暦の閏年に準拠してるかを、実機動作で見てみる。
検証
検証用に、次のコードを用意して、出力結果を見てみる。
年初からの起算日(2020.12.31)<$MTDate ts="20191231000000" format="%j" $> 年初からの起算日(2020.12.31)<$MTDate ts="20201231000000" format="%j" $> 年初からの起算日(2100.12.31)<$MTDate ts="21001231000000" format="%j" $>
結果、次の通りだったので、どうもグレゴリオ暦に準拠してるっぽい。
年初からの起算日(2020.12.31)365 年初からの起算日(2020.12.31)366 年初からの起算日(2100.12.31)365
ちなみに、現状はググってもこの辺りの詳細な情報は出てこなかった。
より詳細を知りたい時は、MT本体のコードを見るかMTQあたりで聞いた方が良いと思う。
参考
※1 質問3-6)どの年がうるう年になるの? | 国立天文台(NAOJ)
https://www.nao.ac.jp/faq/a0306.html