我想在 PHP 中获取当前时间戳(以毫秒为单位),如下所示,在 JavaScript 中我使用
Date.now()
1436030635348
我尝试了如下所示:
$time = str_replace(".","",microtime(true));
但有时它无法正常工作。就像它少打印一位或两位数字一样。
它可以打印更少的数字,因为它是浮点值。因此,如果您得到
1234.0005
,则 `.0005 实际上意味着 500 微秒。 5 之后的零会丢失,因为它仍然是未格式化的浮点值。
函数
microtime
基于系统调用gettimeofday()
,它也不精确到微秒。通常精确到 10 微秒。另请参阅 Linux - gettimeofday() 是否保证具有微秒分辨率。
-编辑-我看到您问题中的规格已从微秒更改为毫秒。
要获取整数形式的浮点值,您可以乘以一个值。浮点值表示秒。乘以 1000 即可得到毫秒,或乘以 1,000,000 即可得到微秒。由于规范(现在)规定毫秒,因此您应该乘以 1000。10k 将为您提供 1/10ms = 100μs 的精度。一毫秒是千分之一秒。一微秒是百万分之一秒。
长话短说,要获取以整数毫秒为单位的时间,请使用以下命令:
$milliseconds = intval(microtime(true) * 1000);
注意:默认情况下,您以字符串或浮点数形式获取时间是有原因的。原因是在32位系统上,PHP的整数也是32位,不足以容纳包括毫秒和微秒在内的时间戳。所以这个解决方案只能在 64 位系统上运行良好。
$timeStampData = microtime();
list($msec, $sec) = explode(' ', $timeStampData);
$msec = round($msec * 1000);
$result = $sec . $msec;
类似这样的事情
但请注意,js date.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 手册页。