PHP:日付の扱いを間違っていても、目的は果たしていた例
以前作られたプログラムを修正するために、期日を過ぎたので入力画面を表示しないようになっていたのを、表示するように設定しても、表示されません。
原因調査
以下のコードで期日が過ぎているか判定していました。
$endDate = date('U',strtotime('2014-01-01 12:00:00')); if (date('Y-m-d H:i:s') > $endDate ){
dateのフォーマットで「U」を使ったことがなかったので調べたら、UNIXエポックからの経過秒数を取得しています。
そのため、日付の文字列と比較してもたまたまifが成立して、日付を変更するまでは、目的の動作をしていて、比較方法がおかしいことにも気づきませんでした。
対処
既存のコードを生かして、以下のように修正して、正常に動作することを確認しました。
$nowtime = date('U'); $endDate = date('U',strtotime('2014-01-01 12:00:00')); if ($nowtime > $endDate ){
目的の動作をしていたので気づきませんでしたが、作った時にどういう比較をしているか確認していてくれれば、修正する必要はありませんでした。