当社の簡易IoTシステムでは、Webブラウザで「装置の稼働履歴」を表示することができます。
この「稼働履歴」を表示するPHPプログラムでは、1ヶ月分の履歴を一覧表示するのですが、本日(8/31)、表示内容を確認したところ、なぜか2ヶ月分(8/1〜9/30)が表示されていました。
そんな訳で、原因を調べました。
表示期間は以下のように、date関数とstrtotime関数を使って求めているのですが、
$btime = strtotime( date("Y/m/01", $target_date) ) ; $etime = strtotime( date("Y/m/01", strtotime('+1 month', $target_date)) ) ;
この、strtotime関数で ‘+1 month’ と指定すると、「8/31の1ヶ月先」→「9/31は存在しないので10/1」と誤認識されてしまうようです。
とりあえずは、以下のように修正して回避しました。
$btime = strtotime( date("Y/m/01", $target_date) ) ; $etime = strtotime( date("Y/m/01", strtotime('+1 month', $btime)) ) ;