我有以下格式的时间阵列
$array = ('00:01:39','00:03:30','00:05:09','00:10:00','00:00:39','00:02:34','00:06:29','00:26:09','00:13:30','00:07:33');
我希望结果总计为01:17:12
,平均值为07:43
我尝试将时间转换为strtotime
,
并尝试使用:
爆炸给定时间并使用它进行处理。
但无法获得预期的结果。
我想要最简单的方法来找到预期的结果。
先谢谢。
答案 0 :(得分:0)
试试这个:
// use example
$array = ['00:01:39','00:03:30','00:05:09','00:10:00','00:00:39','00:02:34','00:06:29','00:26:09','00:13:30','00:07:33'];
echo sum_time($array); # 01:17:12
echo avg_time($array); # 00:07:43
// functions
function calc_time(array $times) {
$i = 0;
foreach ($times as $time) {
sscanf($time, '%d:%d:%d', $hour, $min, $sec);
$i += $hour * 3600 + $min * 60 + $sec;
}
return $i;
}
function sum_time(array $times) {
$i = calc_time($times);
if ($h = floor($i / 3600)) $i %= 3600;
if ($m = floor($i / 60)) $i %= 60;
return sprintf('%02d:%02d:%02d', $h, $m, $i);
}
function avg_time(array $times) {
$i = calc_time($times);
$i = round($i / count($times));
if ($h = floor($i / 3600)) $i %= 3600;
if ($m = floor($i / 60)) $i %= 60;
return sprintf('%02d:%02d:%02d', $h, $m, $i);
}
答案 1 :(得分:-1)
$secs = strtotime($time1)+strtotime($time2);
$total = date("H:i:s",$secs);
$avg = date("H:i:s",$secs/2);