2016-12-30 20 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)))