我想在PHP中获取当前时间戳(以毫秒为单位),在JavaScript中我使用Date.now()
1436030635348
我尝试过类似下面的内容:
$time = str_replace(".","",microtime(true));
但有时它不能正常工作。就像它打印一个或两个数字少。
答案 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。