- PVSM.RU - https://www.pvsm.ru -
Добрый день читатели.
Хочу поведать вам о небольшой проблеме с вычислением даты функцией strtotime [1].
Суть в следующем. Мне нужно было получить название предыдущего месяца. Ничего сложного в этой задаче нет:
$t = strtotime('-1 month');
echo strftime('%B', $t);
В большинстве случаев этот вариант отлично подходит. Но не сегодня. А ведь ещё даже не пятница =). Т.к. сегодня 31 мая, то вышеуказанный код вернул 1 мая. А +1 month вернул вообще 1 июля. Странно. В такие моменты каждый PHP-программист начинает изобретать следующий велосипед:
$months = array(1=>'Январь','Февраль','Март'...);
echo $months[date('m')-1];
Но мне надоели эти костыльные решения, и я начал изучать вопрос.
Оказалось все можно решить намного проще:
$t = strtotime('first day of previous month');
echo strftime('%B', $t);
Этот код как раз вернет 1 апреля. Так что всем советую подробнее почитать о функции strtotime [1]. Она не так проста как кажется.
Красивого кода и удачи.
Автор: rmrevin
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/php-2/8657
Ссылки в тексте:
[1] strtotime: http://ru.php.net/strtotime
Нажмите здесь для печати.