ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

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 ){

 

目的の動作をしていたので気づきませんでしたが、作った時にどういう比較をしているか確認していてくれれば、修正する必要はありませんでした。