繁体   English   中英

如何以min:sec显示php microtime?

[英]how to display php microtime as min: sec?

我使用以下方式显示代码执行时间(秒):

$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 unit。 我没有问题单位工作但是,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";

谢谢大家

你应该使用一个小帮助函数:

<?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小时,您将遇到麻烦,但如果您要测量脚本的执行时间,那可能不是问题;-)

没有使用日期格式化程序的解决方案 - 自己完成所有操作:

$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小时)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM