2016-12-30 6 views

答えて

4

正確にはは、PHPマニュアルによれば、マイクロ秒単位のUnixタイムスタンプを取得できます。オペレーティングシステムがgettimeofday()システムコールをサポートしている限り。

microtime()

+0

非常に良い答え –

+0

'微小時間(真)は' 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))) 
関連する問題