Создайте трехзначную миллисекунду с php

У меня есть 13-значный номер и вы хотите создать дату и время с включением milisecond

Пример кода выглядит так: это мой php-скрипт

$mil = 1328910295939; $seconds = $mil / 1000; $showdate = date('Y:m:d H:i:s', $seconds) ; echo "$showdate"; 

результат похож на этот 2012: 02: 10 15: 44: 55.xxx ===> xxx – это трехзначные миллисекунды, которые я хочу показать.

и как включить с 3-значной milisecond после H: i: s

Пожалуйста, помогите мне…..

Как насчет чего-то подобного?

 $mil = 1328910295939; function toTimestamp($milliseconds) { $seconds = $milliseconds / 1000; $remainder = round($seconds - ($seconds >> 0), 3) * 1000; return date('Y:m:d H:i:s.', $seconds).$remainder; } echo toTimestamp($mil); 

Tadaa!

Это тоже должно быть довольно быстро.

Кроме того, это результат: 2012:02:10 15:44:55.939 – почему вы не используете – для того, чтобы разграничить дату, я 2012:02:10 15:44:55.939 меня.

Просто обрезайте последние два символа:

 substr(date('Ymd H:i:s.u',1328910295939), 0, -2) 

Вот функция, которая сделает это для вас точно (округлением, а не срезанием):

 function getTimestamp() { $microtime = floatval(substr((string)microtime(), 1, 8)); $rounded = round($microtime, 3); return date("Ymd H:i:s") . substr((string)$rounded, 1, strlen($rounded)); } 

Объяснение:

microtime () возвращает 2 числа как 1 строку, ограниченную пробелом. второе число – это количество секунд с момента unix, а 1-е число – это количество микросекунд со второго номера. В основном, первое число представляет собой количество микросекунд, выраженное в формате 8 точности (0,00000000), а конечные 0 никогда не обрезаются.

Мы округлим это с точностью до 3 (0,00) и отрезаем ведущее 0 и добавим его к фактической метке времени.

По какой-то причине php doc для u, микросекунд, по-видимому, фактически не поддерживается. При использовании этого метода я получаю 0.000 каждый раз. Поэтому я использовал microtime () в качестве резервного решения.

 $t = 1328910295939; echo date('Ymd H:i:s.', substr($t, 0, -3)) . substr($t, -3); 

Выход: 2012-02-10 16:44:55.939 (зависит от часовой пояс)

Поскольку эти ответы были довольно забавны по своей сложности, вот еще один ответ для будущего потомства, который использует исходный код айзера и не обрабатывает числа как строки.

 $mil = 1328910295939; $seconds = floor($mil / 1000); $fraction = $mil % 1000; $showdate = date('Y:m:d H:i:s',$seconds) . ".$fraction"; echo "$mil<br> $seconds<br> $fraction<br> $showdate"; 

Выводит на сервере, установленном в часовом поясе EST, следующее:

 1328910295939 1328910295 939 2012:02:10 16:44:55.939