我使用以下命令显示代码执行时间:
$time_start = microtime(true);
// code here
$time_end = microtime(true);
$time = ($time_end - $time_start);
$time = number_format((float)$time, 3, '.', '');
echo "Process Time: {$time} sec";
我得到了例子:
9.809 sec
我想将执行显示为:
min : sec
,如果min <1,则为sec单位,如果min> 1则为min单位。
我没有问题单位工作,但是,microtime以毫秒为单位给出时间我如何得到以前的输出:
00:09 sec or 03:50 min
解决方案: 之一:
date('i:s', (int) $time);
或:
$minutes = floor($time / 60);
$seconds = $time % 60;
$minutes = str_pad($minutes, 2, '0', STR_PAD_LEFT);
$seconds = str_pad($seconds, 2, '0', STR_PAD_LEFT);
echo "Process Time: $minutes:$seconds";
全部谢谢
答案 0 :(得分:4)
你应该使用一个小帮手功能:
<?php
$times = array(9.123, 230.455, 3601.123);
foreach($times as $time) {
echo $time . " => " . formatMicrotime($time) . "\n";
}
function formatMicrotime($time) {
return date('i:s', (int) $time);
}
输出是:
9.123 => 00:09
230.455 => 03:50
3601.123 => 00:01
正如您所看到的,如果时间跨度大于1小时,您将遇到麻烦,但如果您正在测量脚本的执行时间,那可能不是问题; - )
答案 1 :(得分:1)
不使用日期格式化程序的解决方案 - 自己完成所有工作:
$minutes = floor($time / 60);
$seconds = $time % 60;
$minutes = str_pad($minutes, 2, '0', STR_PAD_LEFT);
$seconds = str_pad($seconds, 2, '0', STR_PAD_LEFT);
echo "Process Time: $minutes:$seconds";
注意:如果分钟数等于或大于60,这也有效。即使您的分钟数大于99,后者也需要两个以上的空格(输出120:00
例如2小时。)