У меня есть 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