DateTime с микросекундамиPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 DateTime с микросекундами

Сообщение Anonymous »

В моем коде я использую объекты DateTime для управления датами, а затем преобразую их в метку времени, чтобы сохранить их в некоторых файлах JSON.
По некоторым причинам я хочу иметь то же самое, что и DateTime (или что-то близкое), но с точностью до микросекунд (которое я бы конвертировал в число с плавающей запятой при вставке внутри файлов JSON).
Существует ли объект PHP, подобный DateTime, но также может обрабатывать микросекунды?
Цель состоит в том, чтобы иметь возможность манипулировать микровременами с объектами.
В документации date() есть что-то, что указывает, что DateTime может быть создано с микросекундами, но я не смог найти, как это сделать.

u Микросекунды (добавлены в PHP 5.2.2). Обратите внимание, что date() всегда
генерирует 000000, поскольку принимает целочисленный параметр, тогда как
DateTime::format() поддерживает микросекунды, если DateTime был создан
с микросекундами.

Я пытался установить временную метку объекта DateTime с плавающим значением (microtime(true)), но это не работает (думаю, оно преобразует метку времени в целое число, что приводит к потере микросекунд).
Вот как я пытался
$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)

Я видел этот код, который позволяет добавлять микросекунды к DateTime, но мне нужно было бы внести множество изменений в микровремя, прежде чем создавать DateTime. Поскольку я буду часто использовать это, я хочу внести как можно меньше изменений в микровремя, прежде чем получить «объект микровремени».
$d = new DateTime("15-07-2014 18:30:00.111111");


Подробнее здесь: https://stackoverflow.com/questions/336 ... croseconds
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»