我有以下PHP datetime object给出了奇怪的结果:
<?php
$date = new DateTime("2013-01-01");
$date2 = new DateTime("2011-01-01");
$interval = $date2->diff($date);
echo $interval->m;
?>
我不确定为什么某些间隔有效,有些则不然。任何想法或这是预期的?如果可能的话 - 我想继续使用DateTime来找到这种差异,但愿意接受其他必要的手段。
答案 0 :(得分:4)
请参阅,$interval
是一个对象,而不是一些原始值。在您的示例中,此间隔包含两年,零个月和零天。当您查询其属性时,它不会自动转换为“以月为单位的间隔,以天为单位的间隔”等:它只返回它们的值。这是非常正确的:例如,你应该考虑每月间隔29天吗?
唯一的例外是$days
属性(不是$d
!),它实际上具有该间隔内天数的计算值。它在documentation:
$ days
总计开始日期和结束日期之间的天数 DateTime :: diff()计算