PHPで日付の妥当性チェックをする際に、checkdate関数をよく使うのですが、
マニュアルをよくよく見ると・・・

「年は 1 から 32767 の間となります。 」と。。。

で、気になったわけです。


[テキストボックス]年[テキストボックス]月[テキストボックス]日

という見た目の入力項目で、年のテキストボックスに西暦の下2桁を入れた場合どうなるのか。
試しに「78」と入力してみると、みごと日付は妥当だと判断されるんですね。

で、そのままmysqlでdate型になっているカラムにインサートしちゃうとどうなるかというと。。。
そこは補完が効いて「1978」年で登録されると。
「08」と入力するとDBでは2008年で登録されると。

境目は「69」と「70」のところにあって、
「69」⇒「2069」
「70」⇒「1970」
と補完されました。

この境目については、epoch前とepoch後というWassrメッセージを頂いているのですが、ここでは割愛・・・

結局、年の部分に4桁のチェックは必要だなぁ。と、思った次第です。
あと、テキストボックスの場合は、左側に「西暦」とか表示してあげるとわかりやすいと思いました。

以上、メモ書きでした。

コメントは受け付けていません。