Php 微秒,小数点为2
我试着用2个小数计算一个动作的秒时间Php 微秒,小数点为2,php,microtime,Php,Microtime,我试着用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*6
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的形式获取开始时间…并以整数秒的形式返回它
例如,它返回2秒
我试着用2个小数点获得秒
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, '.', '');
}
但是它在短时间内返回0.00,我认为您的问题来自
(浮动)
到$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
$start=microtime(真);
对于($i=0;$i<10000000;$i++){
#代码。。。
}
$end=微时间(真);
回声“
”$时间=数字格式($end-$start),2;
//我们得到这个:1.20
比较PHP两个函数性能的示例:
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
define('NUM_TESTS',1000000);
$start=microtime(真);
对于($i=0;$i
使用PHP的round函数:我尝试了你的代码,收到了2.0001289844513和2.00-如果我睡眠(70),这些是秒数和数字格式的结果代码>我得到的结果是:string(5)“10.00”
我是php新手,不是编程新手。虽然您的代码对我来说非常有用,但这种代码是人们谈论PHP的原因。无论如何谢谢你