微秒,带 2 位小数

microtime in second with 2 decimals

我尝试计算一个动作的时间,以秒为单位,保留 2 位小数。

protected function microtimeFormat($data)
    {
        $duration = microtime(true) - $data;
        $hours = (int)($duration/60/60);
        $minutes = (int)($duration/60)-$hours*60;
        return $seconds = $duration-$hours*60*60-$minutes*60;

    }

此方法获取开始时间作为 $data...并返回一个 int 秒

例如return2秒。

我试着用两位小数获得第二名...

protected function microtimeFormat($data,$format=null,$lng=null)
    {
        $duration = microtime(true) - $data;
        $hours = (float)($duration/60/60);
        $minutes = (float)($duration/60)-$hours*60;
        $seconds = $duration-$hours*60*60-$minutes*60;
        return number_format((float)$seconds, 2, '.', '');
    }

但它 return 我 0.00 短时间

我认为您的问题来自 (float)$hours$minutes 的转换。当你这样做时,你不会保存每个的小数部分,所以你对 $seconds 的计算总是给出 0。转换为 int 所以你实际上保存在 $hours$minutes它们各自代表的实际秒数。剩下的去 $seconds.

protected function microtimeFormat($data,$format=null,$lng=null)
{
    $duration = microtime(true) - $data;
    $hours = (int)($duration/60/60);
    $minutes = (int)($duration/60)-$hours*60;
    $seconds = $duration-$hours*60*60-$minutes*60;
    return number_format((float)$seconds, 2, '.', '');
}

$start = microtime(TRUE);
sleep(1);
$delay = $this->microtimeFormat($start);
var_dump($delay);

这给了我:

string(4) "1.01"

我用这个表格生成一个以秒为单位的时间,例如1.20

$start = microtime(true);
for ($i=0; $i < 10000000; $i++) { 
    # code...
}
$end = microtime(true);

echo "<br>" . $time = number_format(($end - $start), 2);
// We get this: 1.20

比较PHP的2个函数性能的例子:

define( 'NUM_TESTS', 1000000);

$start = microtime(true);

for( $i = 0; $i < NUM_TESTS; $i++)
{
    mt_rand();
}

$end = microtime(true) - $start;
echo 'mt_rand: ' . number_format(($end), 2) . "\n";

$start = microtime(true);

for( $i = 0; $i < NUM_TESTS; $i++)
{
    uniqid();
}

$end = microtime(true) - $start;
echo 'uniqid: ' . number_format(($end), 2) . "\n";
// We get this: mt_rand: 0.12 uniqid: 2.06