strtotimeでmonthを使用するときの注意点

strtotimeで、先月や翌月など何ヵ月前とか何ヶ月後を求めるときに、monthによる差分を使用することがあると思います。
しかしこのmonthは注意が必要です。
[参考記事] strtotimeの指定のサンプル

たとえば先月というコードを次のように書いたとします。

echo '先月 : '. date('m', strtotime('-1 month'));

このコードは

echo '先月 : '. date('m', strtotime(date("Y-m-d") . ' -1 month'));

と書いても同じです。

正しく動作するように見えて実は違います。
たとえば3月31日にこれを実行したとすると、 03 が出力されます。
つまり3月31日の1ヶ月前は3月となってしまいます。

echo '先月 : '. date('m', strtotime('2000-03-31 -1 month'));

03

これは
2000年3月31日の1ヶ月前は2000年2月31日
2000年2月は29日しかないので31日は29日の2日後、つまり2000年3月2日
となるようです。

ただしく先月を求めるには

echo '先月 : '. date('m', strtotime(date("Y-m-01") . ' -1 month'));

と書きます。

関連記事

スポンサーリンク

onMouseWheel

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る