2016-11-22 141 views
1

当时间大于24小时时,计算时间差异的最佳方法是什么?时间大于24小时之间的PHP计算差值

$time1 = '76:00:00'; 
$time2 = '30:00:00'; 

// result should be 46:00:00 
echo date('H:i:s', strtotime($time1) - strtotime($time2)); 

但是,这不能用这个做,因为它大于24小时。

而且在数据库中我已经保存时间是这样的:33:30:00 我在PHP怎么能格式化它:33:30

+0

你为什么要存储这样的时间? – bassxzero

+0

如果你使用正常的时间戳它很容易计算差异 – Bolli

+0

我认为你需要做手动计算。 –

回答

0

使用\DateTime\DateInterval进行计算:

$date1 = new \DateTime('now', new DateTimeZone('UTC')); 
$date2 = new \DateTime('now', new DateTimeZone('UTC')); 
$time1 = new \DateInterval('PT76H'); 
$time2 = new \DateInterval('PT30H'); 

$date1->add($time1); 
$date2->add($time2); 

$diff = $date1->diff($date2); 
echo ($diff->days * 24 + $diff->h) . $diff->format(':%I:%S'); 

说明: 无法直接在DateInterval上执行计算,因此您必须创建日期作为计算的基础。然后为当前日期添加两个不同的时间间隔,并计算它们之间的差异。 diff()返回\DateInterval,其中包含总天数,您必须乘以24才能获得小时数,以及不能使整天数的小时数。

编辑:时区应指定为UTC以避免夏令时问题。

+0

什么是值:'PT76H'和'PT30H' – Bham

+0

这些是时间间隔定义。看到这里的例子:http://php.net/manual/en/dateinterval.construct.php –

+0

当一次比另一次更大时,是否有可能显示负值? – Bham