PHPでミリ秒単位で現在時刻を取得する方法


PHPで現在時刻を取得する関数にtime()がありますが、
これは秒の精度までしか取得できません。

ミリ秒、マイクロ秒の単位まで取得する場合、
microtime()を使います。

mixed microtime ([ bool $get_as_float = false ] )

PHP5.0以上であれば、引数にtrueを指定することで、
浮動小数点の形でタイムスタンプが取得可能です。
単位は秒です。

PHP4以下の場合、もしくは引数をしていしない場合、
戻り値は以下の形式の文字列になります。

“小数点以下の値[半角スペース]タイムスタンプ(秒)”
例:”0.29529800 1355853826″

よって、以下のように取り出せば、
マイクロ秒精度のタイムスタンプが取得できます。

経過時間などをミリ秒で計算したければ、
1000倍して引き算します。

PHPでミリ秒単位で現在時刻を取得する方法” に3件のコメントがあります

  1. microtime(true) の整数部は、secではないでしょうか?

    なので、ミリ秒を求めるには、下記のとおりではないでしょうか?
    $t = microtime(true);
    echo ((int)$t – $t) * 1000

    • コメントありがとうございます。

      現在時刻のうち、ミリ秒成分を取得したい場合、
      確かにご指摘の通りの方法になるかと思います。

      今回の記事では、ある時点からある時点までの経過時間を「ミリ秒精度」で取得する方法を紹介しました。
      time()の差分だと秒の精度までしか取得できないので、もっと細かい精度(ある処理に10ミリ秒かかった……等)で取得したい場合、この方法を取れば良いわけです。

      ご指摘の解釈として合っていますでしょうか?

      誤解を招く表現で申し訳ございませんでした。

  2. いえいえ、こちらこそすみませんでした。。。

    $start = microtime(true);
    $end = microtime(true);
    ($end – $start) * 1000 == $end * 1000 – $start * 1000 ですよね。。。