为什么两个DateTime对象之间的区别不起作用?

时间:2015-11-27 17:37:48

标签: php datetime datediff

我的"日期时间差异代码"我遇到了问题:

$timeStart = new DateTime('2015-11-28');
$timeEnd = new DateTime('2016-11-28');
$interval = $timeEnd->diff($timeStart);
$result = $interval->format('%d');

echo $result." day(s)";

当我想象$ result时,PHP显示我0.但是在这两个日期之间有超过0天的日子......

php不计算两个不在同一年的日期之间的差异吗?

2 个答案:

答案 0 :(得分:3)

因为有0天的差异。然而,有1年的差异。如果您将%d更改为%y,则会获得1.因此,相差1年零,0个月和0天。

您可以使用的是days上的DateInterval属性,因此:

$result = $interval->days;

答案 1 :(得分:1)

好的,我知道已经给出了答案。但下面只是一点解释。

事实上,当您有固定的时间(年,月,日,小时)时,DateInterval::format()确实有意义,如下所示:

DateInterval::days

这不是你的情况!
在哪里你有相对时间(2016-11-28与2015-11-28相关)。在这种特殊情况下,您需要自2015年11月28日以来的日期数量 这就是$start = new DateTime('2015-11-28'); $end = new DateTime('2016-12-28'); var_dump($end->diff($start)->days); (DateTime :: diff()返回DateInterval对象)的原因:

skybox.position.x = camera.position.x;  //Moving skybox with camera
skybox.position.z = camera.position.z;  //Moving skybox with camera
skybox.position.y = camera.position.y;  //Moving skybox with camera