douhuan6157 2013-12-11 05:05
浏览 250
已采纳

计算php中经过的时间 - 超过24小时

What I am trying to do is add up hours/mins/secs that span over 24 hours, for example:

12:39:25
08:22:10
11:08:50
07:33:05

What I would like it to return is "39:43:30" rather than a date from 1970. Below is the code I'm currently using (note - its from within a class, not just a function).

private function add_time($time1, $time2)
{
$first_exploded = explode(":", $time1);
$second_exploded = explode(":", $time2);
$first_stamp = mktime($first_exploded[0],$first_exploded[1],$first_exploded[2],1,1,1970);
$second_stamp = mktime($second_exploded[0],$second_exploded[1],$second_exploded[2],1,1,1970);
$time_added = $first_stamp + $second_stamp;
$sum_time = date("H:i:s",$time_added);
return $sum_time;
}

Any advise would be much appreciated.

  • 写回答

2条回答 默认 最新

  • dsgwoh7038 2013-12-11 05:24
    关注

    Here's a nice little function that will add up any number of times passed in an array:-

    function addTimes(Array $times)
    {
        $total = 0;
        foreach($times as $time){
            list($hours, $minutes, $seconds) = explode(':', $time);
            $hour = (int)$hours + ((int)$minutes/60) + ((int)$seconds/3600);
            $total += $hour;
        }
        $h = floor($total);
        $total -= $h;
        $m = floor($total * 60);
        $total -= $m/60;
        $s = floor($total * 3600);
        return "$h:$m:$s";
    }
    

    Use it like this:-

    $times = array('12:39:25', '08:22:10', '11:08:50', '07:33:05',);
    var_dump(addTimes($times));
    

    Output:-

    string '39:43:30' (length=8)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部