PHP Date - странный расчет даты - PullRequest
0 голосов
/ 01 сентября 2018

Я пытался округлить время до целой минуты (как часть большего механизма округления). В своих модульных тестах я понял что-то странное, этот код:

echo date('Y-m-d H:i:00', strtotime('2018-09-31 19:39:45'));

результат:

2018-10-01 19:39:00

Что я делаю не так?

Примечание: я БЫЛ , на котором запущен 2018-10-01

http://sandbox.onlinephpfunctions.com/code/1cb0dd98e9d540616d02ce2d5c00684800af8597

1 Ответ

0 голосов
/ 01 сентября 2018

strtotime() не проверяет даты.

Если вы делаете

echo date('Y-m-d H:i:00', strtotime('2018-02-30 19:39:45'));

Выходы

2018-03-02 19:39:00

Итак, проблема здесь в том, что вы используете «недопустимую» дату, а PHP суммирует секунды. Итак, 31 сентября означает 30 сентября + 24 часа (в секундах). При запуске date() получит дату в секундах и покажет вам действительную дату, первое октября.

...