获取当前时间戳(以毫秒为单位)[重复]

问题描述 投票:0回答:3

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

Date.now()

1436030635348

我尝试了如下所示:

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

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

php timestamp microtime
3个回答
16
投票

它可以打印更少的数字,因为它是浮点值。因此,如果您得到

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 位系统上运行良好。


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

$result = $sec . $msec;

类似这样的事情

但请注意,js date.now() 返回的时间以毫秒为单位,而不是微秒


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 手册页

© www.soinside.com 2019 - 2024. All rights reserved.