10

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

1436030635348

我尝试了如下方法:

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

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

4

3 回答 3

15

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

该函数microtime基于系统调用gettimeofday(),它也不精确到微秒。通常精确到 10 微秒。另请参阅Linux - gettimeofday() 是否保证为微秒级分辨率

-edit- 我看到您问题中的规格已从微秒变为毫秒。

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

长话短说,要以整数毫秒为单位获取时间,请使用以下命令:

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

注意:默认情况下将时间作为字符串或浮点数获取是有原因的。原因是在 32 位系统上,PHP 的整数也是 32 位,不足以容纳包括毫秒和微秒在内的时间戳。所以这个解决方案只能在 64 位系统上运行良好。

于 2015-07-04T17:34:00.700 回答
1
$timeStampData = microtime();
list($msec, $sec) = explode(' ', $timeStampData);
$msec = round($msec * 1000);

$result = $sec . $msec;

像这样的东西

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

于 2015-07-04T17:44:53.667 回答
0

我认为您只需要使用此函数即可在 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 手册页

于 2015-07-04T17:36:08.067 回答