如何从DateInterval中减去DateInterval?

时间:2018-03-29 08:14:45

标签: php datetime

我有两个间隔:

$intervalFrom = DateInterval('12:00')
$intervalTo = DateInterval('1:30')

输出必须是:

DateInterval('10:30')

我试试

$newInterval =  $intervalFrom->sub($intervalTo);

但它不起作用

1 个答案:

答案 0 :(得分:0)

您可以使用PT12HPT1H30M创建DateInterval两次。

为了获得差异,您可以使用DateTime diff方法。

创建2个日期时间并传递2个固定的起点,例如"午夜"并为他们两个添加一个间隔。

检索小时数h和分钟i并使用它们创建新的DateInterval:

$intervalFrom = new DateInterval('PT12H');
$intervalTo = new DateInterval('PT1H30M');
$d1 = new DateTime("midnight");
$d1->add($intervalFrom);
$d2 = new DateTime("midnight");
$d2->add($intervalTo);
$diff = $d1->diff($d2);
$strResult = sprintf("PT%sH%sM", $diff->h, $diff->i);
$resultDateInterval = new DateInterval($strResult);

Demo