PHP(7.2.14)、date関数の注意

PHPのdate関数で日付の処理をしていた時に少し引っかかったのでまとめておきます。

詰まったところは月末判定です。今年は2019年なので閏年ではありませんね。なので2月は28日までしかありません。

現在が1月だとして、

echo date("Y/m/t", strtotime("1 month")); //1月追加

を実行すると、翌月の月末の値が出力されます。 なのでもちろん

>>> 2019/02/28

となりますね。

しかし”t”で月末指定せずに、

echo date("Y/m/31", strtotime("1 month")); //1月追加

とすると

>>> 2019/02/31

というありえない日付を出力してしまいます。

date関数におけるstrtotimeでの月の追加は厳密な処理をしないので気をつけましょう