Почему в марте 2013 на один час меньше времени, чем в марте 2012 (PHP)?

Почему в марте 2013 года PHP показывает на один час меньше времени, чем в марте 2012?

Код для вычисления простой:

echo strtotime('2012-03-01') - strtotime('2012-03-31')


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

Март 2012 = 2588400 секунд

Март 2013 = 2592000 секунд

Март 2014 = 2588400 секунд

Март 2015 = 2588400 секунд

Март 2016 = 2588400 секунд

Март 2017 = 2588400 секунд

Март 2018 = 2588400 секунд

Март 2019 = 2592000 секунд

Как видно, такая же история повторяется в 2019 году. Конечно, тут не учитываются последние сутки, но все же, почему одни и те же 30 дней имеют разное количество секунд? Кто-нибудь знает, почему?
  • Вопрос задан
  • 4910 просмотров
Решения вопроса 1
PaulZi
@PaulZi
Дело в переводе летнего времени в последнее воскресение марта (которое у нас отменили).
strtotime конвертирует время в unixtimestamp соответственно то прибавляя 3600, то нет.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@WEBIVAN
Вероятно, в выбранной временной локали в 2013 и 2019 года переход на летнее время попадает на март.
Ответ написан
WildZero
@WildZero
Лично у меня все норм. Для всех месяцев результат 259200. Что в принципе и правильно.
php 5.4.9
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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