Как стать автором
Обновить

Проблема модификации даты через strtotime

Время на прочтение1 мин
Количество просмотров19K
Добрый день хабравчане.

Хочу поведать вам о небольшой проблеме с вычислением даты функцией strtotime.

Суть в следующем. Мне нужно было получить название предыдущего месяца. Ничего сложного в этой задаче нет:
$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.

Красивого кода и удачи.
Теги:
Хабы:
Всего голосов 65: ↑45 и ↓20+25
Комментарии60

Публикации

Истории

Работа

PHP программист
114 вакансий

Ближайшие события

15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань