В моем коде я использую объекты DateTime
для управления датами, а затем конвертирую их в метку времени, чтобы сохранить их в некоторых файлах JSON.
По некоторым причинам я хочу иметь то же самое, что и DateTime (или что-то близкое), но с точностью до микросекунды (что я бы преобразовал в float при вставке внутри файлов JSON).
Мой вопрос: есть ли объект PHP, который похож на DateTime
, но может обрабатывать микросекунды тоже?
Цель состоит в том, чтобы иметь возможность манипулировать микротимами с объектами.
В документации date() есть что-то, что указывает на то, что DateTime может быть создано с помощью микросекунд, но я не смог найти как.
u Microseconds (добавлено в PHP 5.2.2). Обратите внимание, что date() всегда будет сгенерируйте 000000, так как он принимает целочисленный параметр, тогда как DateTime:: format() поддерживает микросекунды, если была создана DateTime с микросекундами.
Я попытался установить временную метку объекта DateTime с плавающим значением (microtime(true)
), но он не работает (я думаю, что он преобразует метку времени в int, вызывая потерю микросекунд).
Вот как я пробовал
$dt = new DateTime();
$dt->setTimestamp(3.4); // I replaced 3.4 by microtime(true), this is just to give an example
var_dump($dt);
var_dump($dt->format('u'));
.4
не учитывается, как вы можете видеть здесь (хотя мы можем использовать формат u
, который соответствует микросекундам).
object(DateTime)[1]
public 'date' => string '1970-01-01 01:00:03' (length=19)
public 'timezone_type' => int 3
public 'timezone' => string 'Europe/Berlin' (length=13)
string '000000' (length=6)
EDIT: я видел этот код, который позволяет добавлять микросекунды к DateTime, но мне нужно будет применить много изменений к microtime перед созданием DateTime. Поскольку я буду использовать это много, я хочу сделать как можно меньше модификаций микрочаса, прежде чем получить "объект microtime".
$d = new DateTime("15-07-2014 18:30:00.111111");