获取php中的总时间和平均时间

时间:2014-04-26 08:35:59

标签: php time strtotime

我有以下格式的时间阵列

$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

并尝试使用:爆炸给定时间并使用它进行处理。

但无法获得预期的结果。

我想要最简单的方法来找到预期的结果。

先谢谢。

2 个答案:

答案 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);
}

demo

答案 1 :(得分:-1)

$secs = strtotime($time1)+strtotime($time2);
$total = date("H:i:s",$secs);
$avg = date("H:i:s",$secs/2);