Как добраться в предыдущем месяце и год относительно сегодня, с помощью strtotime и дата?

Я должен добраться в предыдущем месяце и год относительно текущей даты.

Однако посмотрите следующий пример.

// Today is 2011-03-30
echo date('Y-m-d', strtotime('last month'));

// Output:
2011-03-02

Это поведение понятно (до определенного момента), из-за другого количества дней в феврале, и пройдите, и код в примере выше - то, для чего я нуждаюсь, но работы только 100% правильно между 1-м и 28-м из каждого месяца.

Так, как добраться в прошлом месяце, И год (думать date("Y-m")) самым изящным способом как возможный, который работает в течение каждого дня года? Оптимальное решение будет на основе strtotime парсинг аргумента.

Обновление. Разъяснить требования немного.

У меня есть часть кода, который получает некоторую статистику последних месяцев, но я сначала показываю статистику с прошлого месяца и затем загружаю другие месяцы при необходимости. Это предназначило цель. Так, в течение ЭТОГО месяца я хочу узнать, который год месяца должен я вытягивать для загрузки В ПРЕДЫДУЩЕМ МЕСЯЦЕ статистики.

У меня также есть код, который осведомлен о часовом поясе (не действительно важный прямо сейчас), и это принимает strtotime- совместимая строка, как введено (для инициализации внутренней даты), и затем позволяет дате/времени быть скорректированной, также с помощью strtotime- совместимые строки.

Я знаю, что это может быть сделано с немногими условными выражениями и основной математикой, но это действительно грязно, по сравнению с этим, например (если это работало правильно, конечно):

echo tz::date('last month')->format('Y-d')

Так, мне ТОЛЬКО нужно в предыдущем месяце и год в a strtotime- совместимый вид.

Ответ (спасибо, @dnagirl):

// Today is 2011-03-30
echo date('Y-m-d', strtotime('first day of last month')); // Output: 2011-02-01
58
задан 30 March 2011 в 22:04

1 ответ

date("m-Y", strtotime("-1 months")); 

решил бы это

0
ответ дан 1 November 2019 в 13:45

Другие вопросы по тегам:

Похожие вопросы: