【问题标题】:What is the highest date precision in PHP?PHP中的最高日期精度是多少?
【发布时间】:2017-05-14 09:43:34
【问题描述】:

PHP 有多种创建时间戳的方法。可用的最精确时间戳是多少?

【问题讨论】:

    标签: php time


    【解决方案1】:

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

    microtime()

    【讨论】:

    • microtime(true) 在转换为浮点数时会丢失精度。我认为您最终只能获得 1/10 毫秒的精度。
    【解决方案2】:

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

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

      $ php -r 'echo (new \DateTime())->format("U.u");'
      1483069259.000000
      
    2. microtime(true) 更好,给你大约微秒,但浮点精度会做一些舍入。

      $ 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)))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-07
      • 2014-07-17
      • 1970-01-01
      • 2018-01-14
      • 2017-10-31
      相关资源
      最近更新 更多