システムのバグ
テーマ : ITの事
システムを作っていると、とある部分が、プログラムにバグがありそうだなーとか、不安だなーとか、システムのアキレス腱が頭の中にあったりします。
ところが、昨日、全く頭になかった部分に不具合が起こって
何故??
だったのですが、
・日付に関する事
・29日
という事で、2月の日付の数え方だろうなーとピンときました。
原因は、PHPのプログラムで関数の
strtotime()
なるほど、strtotime("-1 month")は、31日前と処理されて
php側で色々考えて1ヶ月前 とはしてくれないようです。
というか、関数の仕様としては、これで良いのかもしれませんね。
例えば、翌月の月を表示する場合は
$timestamp = strtotime(date("Y-m-01")."+1 month");
echo date("Y年m月", $timestamp);
と一回 1日に戻ったタイムスタンプを取得して、直りました。
PHPを使う人は、お気をつけ下さいませ