获取当前时间戳,以毫秒为单位

时间:2015-07-04 17:29:49

标签: php timestamp microtime

我想在PHP中获取当前时间戳(以毫秒为单位),在JavaScript中我使用Date.now()

1436030635348

我尝试过类似下面的内容:

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

但有时它不能正常工作。就像它打印一个或两个数字少。

3 个答案:

答案 0 :(得分:10)

它可以打印更少的数字,因为它是一个浮点值。因此,如果你得到1234.0005,那么`.0005实际上意味着500微秒。 5之后的零丢失,因为它仍然是未格式化的浮点值。

函数microtime基于系统调用gettimeofday(),它也不精确到微秒。通常它精确到10微秒。另请参阅Linux - Is gettimeofday() guaranteed to be of microsecond resolution

-edit-我看到规格已从微秒变为毫秒。

要获得整数的浮点值,可以乘以一个值。浮点值表示秒。乘以1000得到毫秒或1,000,000得到微秒。由于规格(现在)比毫秒,你应该乘以1000. 10k将给你1 / 10ms =100μs的精度。毫秒是千分之一秒。微秒是百万分之一秒。

长话短说,为了得到整数毫秒的时间,请使用:

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

注意:默认情况下,您有时间将字符串或浮点数作为时间。原因是在32位系统上,PHP的整数也是32位,并且不足以包含时间戳,包括毫秒和微秒。所以这个解决方案只适用于64位系统。

答案 1 :(得分:1)

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

$result = $sec . $msec;

像这样的东西

但请注意,js date.now()以MILLIseconds返回时间,而不是MICROseconds

答案 2 :(得分:0)

我认为您只需要使用此函数在PHP中获取带微秒的时间戳:

int microtime ( void )

按照以下link中所示使用它,下面的代码段显示了我如何根据您的问题对其进行更改:

<?php

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

$micro_time = microtime_microseconds();

echo $micro_time;

?>

关于microtime() PHP函数的参考,请访问并阅读PHP manual page