9

在我的 PHP 应用程序中,我想计算两个时间变量的总和。我正在寻找类似这个例子的东西。

$time1 = 15:20:00;
$time2 = 00:30:00;
$time = $time1+$time2;
4

7 回答 7

7

如果您期望的答案是15:50:00并且您想要使用strtotimedate函数,则需要在将它们转换为 unix 时间戳时减去秒$time1并共享:$time2

$time1 = '15:20:00';
$time2 = '00:30:00';
$time = strtotime($time1) + strtotime($time2) - strtotime('00:00:00');
$time = date('H:i:s', $time);
于 2015-08-27T18:00:45.200 回答
5

最好的方法是最有可能使用 strtotime 将它们转换为时间戳,然后将它们加在一起:

$o = strtotime($time1)+strtotime($time2);

如果我没记错的话strtotime确实支持这种格式。

否则,您将需要自己过滤掉它。

于 2012-07-30T11:46:42.957 回答
4

以下答案没有返回正确的值。它正在对整数求和,但没有返回正确的时间。

$o = strtotime($time1)+strtotime($time2);

我创建了一个函数来获取计算时间,如下所示。

public function addTwoTimes($time1 = "00:00:00", $time2 = "00:00:00"){
        $time2_arr = [];
        $time1 = $time1;
        $time2_arr = explode(":", $time2);
        //Hour
        if(isset($time2_arr[0]) && $time2_arr[0] != ""){
            $time1 = $time1." +".$time2_arr[0]." hours";
            $time1 = date("H:i:s", strtotime($time1));
        }
        //Minutes
        if(isset($time2_arr[1]) && $time2_arr[1] != ""){
            $time1 = $time1." +".$time2_arr[1]." minutes";
            $time1 = date("H:i:s", strtotime($time1));
        }
        //Seconds
        if(isset($time2_arr[2]) && $time2_arr[2] != ""){
            $time1 = $time1." +".$time2_arr[2]." seconds";
            $time1 = date("H:i:s", strtotime($time1));
        }

        return date("H:i:s", strtotime($time1));
    }
于 2016-06-03T08:05:14.917 回答
2

您可以使用 PHP 5.3 DateInterval

$timeInterval = DateInterval::createFromDateString( '15 hours + 20 minutes' );
$timeInterval2 = DateInterval::createFromDateString( '30 minutes' );

foreach( str_split( 'ymdhis' ) as $prop )
{
    $timeInterval->$prop += $timeInterval2->$prop;
}
var_dump( $timeInterval->format( '%H:%i:%s' ) );

(这里解释了如何添加到 DateInterval 对象:我们如何在 PHP 中添加两个日期间隔

于 2012-07-30T11:58:38.817 回答
0

请务必查阅神秘文档http://us1.php.net/strtotime以获取可以输入到函数中的其他内容 :)

$today = time();
$tommorrow = strtotime("+1 days", $today);
$day_after_tomorrow = strtotime("+1 days", $tomorrow);
于 2014-02-15T17:28:50.667 回答
0

据我所知,Sammaye 的回答并不适合我。

我需要从 UNIX 时间戳的开头开始我想添加的时间。这样,strtotime返回第一次需要添加的秒数。

$time1 = "15:20:00";
$time2 = "1970-01-01 00:30:00";
$time = strtotime($time1) + (strtotime($time2) + 3600);
echo $time . "<br />";
echo date("H:i:s", $time);
于 2013-09-12T12:09:02.947 回答
-1

代码:

$time1 = '15:20:00';
$time2 = '00:30:00';
$time = strtotime($time1)+strtotime($time2);
$sumtime = date("H:i:s",$time);
于 2012-07-30T11:51:20.980 回答