Возможный дубликат:
Как получить предыдущий месяц и год относительно сегодняшнего дня, используя strtotime и дату?
Сегодня 31 декабря, но strtotime("-1 months")
возвращается в декабре:
echo date("Ym", strtotime("-1 months"));
То же самое для strtotime("last month")
Как я могу вернуть предыдущий месяц (ноябрь)?
Тест: http://codepad.viper-7.com/XvMaMB
strtotime("first day of last month")
first day of
– это важная часть, подробно описанная на странице руководства Relative Formats .
Пример: http://codepad.viper-7.com/dB35q8 (с жестко запрограммированной сегодняшней датой)
strtotime("-1 months")
будет 2012-11-31
, но 31 ноября нет. Это один день после 2012-11-30
, который дает 2012-12-01
. Вы увидите это, когда вы это сделаете
echo date("Ymd", strtotime("-1 months"));
дает в качестве вывода
2012-12-01
См. Код