在php中添加两个时间值

时间:2013-10-11 10:14:45

标签: php

    $test=strtotime("06:30:00")+strtotime("03:00:00");

    echo gmdate("H:i:s", $test);

这给出了错误的答案(23:01:44)。

    $test=strtotime("06:30:00")-strtotime("03:00:00");

    echo gmdate("H:i:s", $test);

虽然减去相同的代码给了我正确的答案(03:30:00)。

4 个答案:

答案 0 :(得分:3)

你应该这样做:

<?
echo date("H:i:s", strtotime("06:30:00 + 3 hour"));
echo date("H:i:s", strtotime("06:30:00 - 3 hour"));
?>

答案 1 :(得分:1)

你的逻辑错了。如果你的行为与第一个样本相同,那么你将按原样加总两个时间戳(即从0开始) - 所以你将计算两次前一次的时间。但是,如果要减去它们,则会得到“预期”结果,因为每个操作数的前一个句点都会消除另一个。

但这不是它应该如何运作的。您应该使用DateTime API来处理PHP中的日期和句点。

答案 2 :(得分:0)

我遇到了类似的问题,并编写了一个小函数来将时间(以各种方式格式化)转换为秒。将秒组合在一起显然是微不足道的。

function getSeconds($s) {
    $s = str_replace('h',':',$s);
    $s = str_replace(',','.',$s);

    $a = explode(':',$s);
    $n = count($a);

    if ($n==1)
        return $a[0]; //just seconds

    if ($n==2)
        return $a[1] + 60 * $a[0]; //minutes and seconds

    if ($n==3)
        return $a[2] + 60 * $a[1] + 3600 * $a[0]; //hours minutes and seconds
}

适用于以下格式:

 12
 12.34
 12:34 (will assume mm:ss in this format)
 12:34.56
 12:34,56
 12:34:56.78
 12h34:56,78

答案 3 :(得分:0)

 $date1 = strtotime('2012-05-01 12:00:00');
 $date2 = time();
 $subTime = $date1 - $date2;
 $y = ($subTime/(60*60*24*365));
 $d = ($subTime/(60*60*24))%365;
 $h = ($subTime/(60*60))%24;
 $m = ($subTime/60)%60;

 echo "Difference between ".date('Y-m-d H:i:s',$date1)." and ".date('Y-m-d H:i:s',$date2)." is:\n";
 echo $y." years\n";
 echo $d." days\n";
 echo $h." hours\n";
 echo $m." minutes\n";