在php中加入时间

时间:2012-07-04 19:42:34

标签: php time

我想在php中添加时间,但是经过几个小时的google'ing并尝试我仍然无法找到解决方案。

我的价值观是:

$newTotal = '00:45:00';
$oldTotal = '00:16:00';

我想添加那些制作01:01:00的那两个。

你能举个例子我真的很绝望! :P

提前感谢,

4 个答案:

答案 0 :(得分:3)

使用strtotime()将它们转换为Unix时间戳,然后将它们添加为整数:

$newTotal = '00:45:00';
$oldTotal = '00:16:00';

$total = strtotime($newTotal) + strtotime($oldTotal);

要再次将其格式化为hh:mm:ss,请使用date()

echo date('H:i:s', $total);

这给出了:

  

1时01分00秒

答案 1 :(得分:2)

如果这些值总是如此,您可以使用substr()

将它们分解
$hours1 = substr($newTotal, 0, 2);

等。然后简单地将秒数加起来,进行除法和模拟,然后冒泡到几个小时,瞧!“

$secondstotal = $seconds1+$seconds2; 
$restseconds = $secondstotal % 60;
$minutesfromseconds = floor($restseconds / 60);

$minutestotal = $minutes1+$minutes2+$minutesfromseconds;

等。

答案 2 :(得分:1)

保留最小错误的开始日期。

<?php
$origin   = '00:00:00';
$newTotal = '00:45:00';
$oldTotal = '00:16:00';

$added = strtotime($newTotal) + (strtotime($oldTotal) - strtotime($origin));

echo date('H:i:s', $added );

输出:

01:01:00

注意,如果加入后你的时间超过23:59:59,你会得到错误的结果。

答案 3 :(得分:1)

另一种没有时间功能的解决方案:

function sumtotal($a,$b) {
    $i = explode(':',$a);
    $j = explode(':',$b); // 0hh:1mm:2ss
    $k = array(0,0,0,0); // 0days:1hours:2minutes:3seconds
    $k[3] = $i[2]+$j[2];
    $k[2] = (int)($k[3]/60)+$i[1]+$j[1];
    $k[1] = (int)($k[2]/60)+$i[0]+$j[0];
    $k[0] = (int)($k[1]/24);
    $k[3] %= 60;
    $k[2] %= 60;
    $k[1] %= 24;
    if ($k[3]<10) $k[3] = '0'.$k[3];
    if ($k[2]<10) $k[2] = '0'.$k[2];
    if ($k[1]<10) $k[1] = '0'.$k[1];
    return $k[0].' days : '.$k[1].' hours : '.$k[2].' minutes : '.$k[3].' seconds';
}

$newTotal = '01:45:21';
$oldTotal = '03:16:56';
echo sumtotal($newTotal,$oldTotal); // result:  0 days : 05 hours : 02 minutes : 17 seconds