Преобразование объекта DateTime в метку времени UNIX с сохранением миллисекунд - PullRequest
0 голосов
/ 07 июля 2019

У меня есть время, представленное примерно так 2019-07-01T13:40:50.559Z, и мне нужно преобразовать его в метку времени UNIX, сохраняя при этом миллисекунды.

Для преобразования сначала я делаю это:

$t1 = DateTime::createFromFormat('Y-m-d\TH:i:s.u\Z', '2019-07-01T13:40:50.559Z', new DateTimeZone('UTC'));

Распечатка

$t1: object(DateTime)#24 (3) { ["date"]=> string(26) "2019-07-01 13:40:50.559000" ["timezone_type"]=> int(3) ["timezone"]=> string(3) "UTC" }

Сохраняет миллисекунды.Но если я сделаю $t1->getTimestamp(), это вернет только секунды int(1561988450).Я искал в Интернете, и там были разговоры о microtime, но я мог только видеть, что возвращают текущее время.Некоторые люди говорили о умножении его на 1000, но это, кажется, добавляет нули.

Можете ли вы дать мне несколько советов по правильному пути?Спасибо.

1 Ответ

1 голос
/ 07 июля 2019

Извлеките микросекунды из DateTime и добавьте его в метку времени Unix в виде дроби.

$micro = $t1->format("u");
$timestamp = $t1->getTimestamp() + $micro/1e6;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...