テンプレート:Checkdate
「yyyy-mm-dd」「Month yyyy」形式の日付を「yyyy年m月」形式に変換します。「yyyy年m月」形式の日付を指定された場合にはそのまま返します。
基本機能
編集- 「yyyy年m月」形式は、変換せずそのまま返します。
- 例:{{Checkdate|2024年1月}} → 2024年1月
- 例:{{Checkdate|2024年12月}} → 2024年12月
- 「月」の文字より後に日や時刻などがある場合は取り除きます。
- 例:{{Checkdate|2024年11月28日}} → 2024年11月
- 「Month yyyy」形式は、「yyyy年m月」形式に変換します。
- 例:{{Checkdate|November 2024}} → 2024年11月
- 「yyyy-mm」、「yyyy-mm-dd」形式は、「yyyy年m月」形式に変換します。
- 例:{{Checkdate|2024-11-28}} → 2024年11月
- 日付を認識できない場合、または何も指定されない場合には、オプションのdefaultdateが指定されている場合を除き、何も返しません。
- 例:{{Checkdate|あいうえお}} →
- 例:{{Checkdate|}} →
日本語版で追加されたパラメータ
編集- defaultdate
- 日付を認識できない場合、または何も指定されない場合の既定値を指定できます。先頭の3文字が「エラー」だった場合に限り、{{Error}}を呼び出します。
英語版との相違点
編集- このテンプレートの内部で使用している{{#time}}は仕様上、特定の書式での入力に対してユーザーが意図しない認識をする場合があり、その懸念を回避するため、「Month, yyyy」形式は、日本語版ではサポートしていません。
- 同じ問題により、「yyyy年m月〜」、「yyyy-mm〜」形式以外では、2059年以前の日付のみを対象としています。
廃止した機能
編集- 「yyyy年m月」形式で、1桁の月に0を付けて2桁で指定された月を1桁に変換する機能は廃止しました。
備考
編集- 「yyyy年m月」形式(「月」の文字が使用されている場合)においては、正しくない日付を指定された場合でも基本的にはその年月をそのまま返します。
「月」の文字が使用されているのに「年」の文字の代わりに「-」(ハイフン)等が使用されている場合にも「年」には変換しません。 - 「yyyy年m月」形式でない場合において、当{{Checkdate}}が回避している{{#time}}の問題は次のとおりです。
- 「yyyymm」の入力を意図して6桁の数字列を指定した場合に、時刻として解釈することができるときはエラーにならず時刻として解釈される。当{{Checkdate}}では、オプションの defaultdateが指定されている場合を除き、何も返しません。
- 例:{{#time:Y年n月j日 (D) H:i:s (T)|200901}} → 2024年11月28日 (木) 20:09:01 (UTC)
- 「Month, yyyy」を意図した入力の場合(Monthと yyyyの間に「,」(カンマ)を挿入した場合)、時刻として解釈することができるときにはyyyyの数字が時刻として解釈され、そうでなければ年として解釈される。当{{Checkdate}}では、オプションのdefaultdateが指定されている場合を除き、何も返しません。
- 例:{{#time:Y年n月j日 (D) H:i:s (T)|September, 2008}} → 2024年9月28日 (土) 20:08:00 (UTC)
- 指定されている月が小の月(2・4・6・9・11)で、なおかつ年と日が指定されていない場合、それを閲覧している時点が大の月(1・3・5・7・8・10・12)の月末日のときに月数が翌月に繰り上がる。このバグを回避するため、当{{Checkdate}}の内部では、年と月の両方が指定されている入力のみ扱っています。
- 例:{{#time:Y年F|February}} → 毎月28日(閏年の場合は29日)までは正常ですが、その後は3月に繰り上がります。
- 「yyyymm」の入力を意図して6桁の数字列を指定した場合に、時刻として解釈することができるときはエラーにならず時刻として解釈される。当{{Checkdate}}では、オプションの defaultdateが指定されている場合を除き、何も返しません。
この解説は、テンプレート:Checkdate/docから呼び出されています。 (編集 | 履歴) 編集者は、このテンプレートをサンドボックス (作成 | 複製)とテストケース (作成)で試すことができます。(解説) /docのサブページにカテゴリを追加してください。 このテンプレートのサブページ一覧。 |