Получить текущую метку времени с миллисекундами [дубликат]

этот вопрос уже есть ответ здесь:

Я хочу получить текущую метку времени с миллисекундами в PHP что-то вроде ниже, в JavaScript я использую Date.now()

1436030635348

Я пробовал что-то вроде ниже:

$time = str_replace(".","",microtime(true)); 

но иногда он не работает должным образом. Как будто печатает на одну-две цифры меньше.

3 ответов


Он может печатать меньше цифр, потому что это значение плавающее. Так что если вы получите 1234.0005, что `.0005 на самом деле означает 500 микросекунд. Нули после 5 теряются, потому что это все еще неформатированное значение float.

функции microtime основан на системном вызове gettimeofday(), что также не является точным для микросекунды. Обычно это с точностью до 10 микросекунд. См. также Linux-gettimeofday () гарантированно имеет разрешение в микросекунду.

-редактировать- Я вижу, что спецификации изменились с микросекунд на миллисекунды.

чтобы получить значение float, которое у вас есть как целое число, вы можете умножить на значение. Значение float представляет секунды. Умножьте на 1000, чтобы получить миллисекунды или 1,000,000, чтобы получить микросекунды. Поскольку спецификации (сейчас) говорят миллисекунды, вы должны умножить на 1000. 10k передаст вам точность 1 / 10ms = 100µs. Миллисекунда-это одна тысячная секунды. Микросекунда - это одна миллионная секунды.

долгая история короче, чтобы получить время в целочисленных миллисекундах, используйте следующее:

$milliseconds = round(microtime(true) * 1000);

Примечание: есть причина, по которой вы получаете время в виде строки или поплавка по умолчанию. Причина в том, что в 32-битных системах целое число PHP также 32 бита и недостаточно велико, чтобы содержать метку времени, включая миллисекунды и микросекунды. Поэтому данное решение будет работать только на 64-битной системе.


$timeStampData = microtime();
list($msec, $sec) = explode(' ', $timeStampData);
$msec = round($msec * 1000);

$result = $sec . $msec;

что-то вроде этого

но обратите внимание, что дата js.now () время возврата в миллисекундах, а не в микросекундах


Я думаю, вам просто нужно использовать эту функцию, чтобы получить метку времени с микро-секунд в PHP:

int microtime ( void )

использовать его как показано в следующем ссылке, следующий фрагмент кода показывает вам, как я изменил его в соответствии с вашим вопросом:

<?php

function microtime_microseconds()
{
     list($usec, $sec) = explode(" ", microtime());
     return round(($usec * 1000) + $sec);
}

$micro_time = microtime_microseconds();

echo $micro_time;

?>

, а также справки о том, что microtime() функция PHP, пожалуйста, посетите и прочитайте это руководство по PHP-страницы.