PHP Date - странный расчет даты
Я пытался округлить время до целой минуты (как часть большего механизма округления). В моих модульных тестах я понял что-то странное, этот код:
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 ответ
Решение
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()
получит дату в секундах и покажет вам действительную дату, первое октября.