在PHP中添加两次不同的格式

时间:2014-06-15 11:37:19

标签: php date datetime time php-5.3

在我的表中,我有一个变量$duration,它存储在几分钟内。 我也有时间变量。设为$time1

$time1=date('H:i:s',$time);


$duration=1000; //minutes
$time2= secondsToTime($duration*60);

我使用下面给出的函数将$duration转换为时间格式。

function secondsToTime($seconds) {
    $dtF = new DateTime("@0");
    $dtT = new DateTime("@$seconds");
    return $dtF->diff($dtT)->format('%h:%i:%s');
}
  • 所以在$time2中,我有类似存储11:12:13
  • 的内容
  • $time1我有类似的东西存储01:10:19

我想执行$total=$time1+$time2;

所以,我将$time2转换为时间格式。

$timeform= new DateTime($time2); 
$newtime2= $timeform->format('H:i:s');

现在,我添加$total=$time1+$newtime2;

echo date('H:i:s',$total);给了我以下错误:

  

注意:类DateTime的对象无法转换为int

2 个答案:

答案 0 :(得分:1)

date()的第二个参数应该是时间戳(即整数,即秒),而不是格式化的日期字符串。

据我所知,只有比较运算符处理日期时间对象($date1 > $date2),而不是数学运算符($date1 + $date2)。

另请参阅http://nl3.php.net/manual/en/datetime.add.phphttp://nl3.php.net/manual/en/datetime.modify.php

  • 使用1个日期时间实例来计算/格式化总时间
  • 或者,将2个日期时间实例转换为秒,添加它们,并使用date()
  • 进行格式化

答案 1 :(得分:0)

date()的第二个参数应该是Unix时间戳作为整数,而不是DateTime对象。 (见php.net

您需要将DateTime对象转换为Unix时间戳。

尝试getTimestamp()

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