我最近发现了DateTime diff()的奇怪行为。 我只是想计算以下日期之间的差异:
$first = new DateTime('2016-07-05T00:00:00');
$second = new DateTime('2016-12-30T23:59:59');
$interval = $first->diff($second);
echo $interval->h;
奇怪的是,这将输出:
-1
因为我认为DateInterval的公共属性是正面的,所以有点混乱。 现在,如果我尝试自己创建这样的DateInterval:
$interval = new DateInterval('P5M26DT-1H59M59S');
这将失败,因为不允许小时的负值。
这种行为是正常的吗?如果是,我如何安全地将DateInterval转换为string / from string(e.q。用于存储在DB中)?