気づき

毎年3月30日、31日に起こる問題で、

echo date("Y-m-d", strtotime("- 1 month"));

と書くと、3月30日だと"2018-03-01 00:00:00"が返ってくる。

解決

// 上記のまま実行すると、たぶん年に2日しか再現しないので日付指定で。
echo date("Y-m-01", strtotime("2018/03/30 - 1 month")); // "2018-03-01"

// 3月30日 - 30日 = 2月末の日付
echo date("Y-m-01", strtotime("2018/03/30 -" . date('d') . " day")); // "2018-02-01"

実際のコードは

echo date("Y-m-d", strtotime("-" . date('d') . " day"));

なんでいまさらこんなの書いてるんだろうって思ってたら、今までは

echo date("Y-m-01", strtotime(date('Y-m-01') . " - 1 day"));

って書いてた気がする。こっちのほうがわかりやすいなー

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.