2016-12-30 56 views

回答

4

如果按精确您的意思是可能的最小时间增量,根据PHP手册,您可以获得微秒的Unix时间戳。只要您的操作系统支持gettimeofday()系统调用即可。

microtime()

+0

很好的答案 –

+0

'microtime中(真)'在转换为float会损失精度。我认为你最终只能精确到1/10毫秒。 – Ryan

1

的常用方法是microtime(true),但它可能不是最精确的选项。

  1. DateTime默认情况下不是很好,会给你秒。

    $ php -r 'echo (new \DateTime())->format("U.u");' 
    1483069259.000000 
    
  2. microtime(true)较好,并为您提供近似微秒,但float精度会做一些四舍五入。

    $ php -r 'echo microtime(true);' 
    1483069130.6427 
    
  3. gettimeofday()更好,并给你精确的微秒。您可以使用microseconds(false),但处理输出更困难。

    $ php -r 'echo implode(".", array_slice(gettimeofday(), 0, 2));' 
    1483070039.572630 
    

所以最好的\DateTime实例,以饱满的微秒精度:

\DateTime::createFromFormat("U.u", implode(".", array_slice(gettimeofday(), 0, 2)))