[PHP] checkdateが意味不明杉流件 [クヅォ]

この記事は約2分で読めます。
スポンサーリンク

当サイトには広告が含まれています。

日付かどうかをチェックするのに、checkdateというモノがあるが、このヴァクァ詐加減に付ゐて記シタル!

-----

(PHP4,PHP5,PHP7,PHP8)

checkdate — グレゴリオ暦の日付/時刻の妥当性を確認します

checkdate(int $month, int $day, int $year): bool ← 年月日ではなく月日年の順なンで注意。

・month:月は1から12の間となる。
・day:日は、指定されたmonthの日数の範囲内になります。yearが閏(ウル~)年の場合は、それも考慮される。
・year:年は1から32767の間となる。

関連:checkdate

-----

年月日を$dayとし、

list($y,$m,$d) = explode("-",$day) ;

if(checkdate($m,$d,$y)){
  print "日付である" ;
}else{
  print "日付でない" ;
}//if

とシた上で、$dayに様々なモノをアレした結果が、以下である。

checkdateの結果

[1] 日付として妥当なので当然true

[2] 月日を1桁にしてもtrue

[3] 全角にするとfalse

[4] 15月は存在しないのでfalse

[5] 32日はないのでfalse

[6] 年だけだとfalse

[7] 全て数字ではないものだとfalse

[8] 年の頭に0が入っていてもtrue

ココまでは分かるが、問題は[9][10]である。

[9] ドォクォが日付邪!ドァヴォ!!

[10] ドォクォが日付邪!ドァヴォ!!

[11][12][13]の振舞を見ると、どうも各々の頭に数字以外が入るとfalseのヨ~だが、2文字目以後に入るとtrueとなる模様。

各々はint(整数)だとあるので、各々をis_numericで調べるなどする必要があるが、ンなもン、checkdateに内包シトケ耶!ドァヴォ!!

フォデ、

“20*3-10-10”
“20*3-1*-1*”

がtrueになる理由は?

全く以て、意味不明!

ヴァクァなの?スィヌの?

関連:[PHP] 指定日から”+1 day”とか [strtotime]

関連:[PHP] date(日付)のフォーマット一覧 [年/月/日/時/分/秒/曜日]

タイトルとURLをコピーしました