суббота, 22 мая 2021 г.

PHP. Особенность создания объекта даты DateTime с микросекундами

В некоторых случаях создание объекта класса DateTime в PHP (с микросекундами) может завершаться фатальной ошибкой. С чем это связано и как победить?

Во-первых, как создать объект с учётом Микросекунд:


$now = DateTime::createFromFormat('U.u', microtime(true));

То есть мы указываем формат "U.u"  и в качестве параметра передаем время с микросекундами.

Но это не всегда хорошо работает.

Особенность в том, что если вдруг мы чётко попали в момент, когда микросекунд нет (0 микросекунд), тогда microtime() вернет просто целое число и это уже не подойдет для указанного формата "U.u".

Решение:


$now = DateTime::createFromFormat('U.u', sprintf('%.f', microtime(true)));


Комментариев нет:

Отправить комментарий