1

我有以下PHP 日期时间对象给出奇怪的结果:

<?php
$date = new DateTime("2013-01-01");
$date2 = new DateTime("2011-01-01");

$interval = $date2->diff($date);
echo $interval->m;
?>
  • 使用月份 (m) 时,返回 0。不正确。
  • 当我将间隔切换为年(y)时,它返回 2,这是正确的。
  • 当我切换到天 (d) 时,它返回 0,不正确。
  • 当我使用“天”切换到天时,它返回 731,这是正确的

我不确定为什么某些间隔有效而其他间隔无效。有什么想法或者这是预期的吗?如果可能的话 - 我想继续使用 DateTime 来发现这种差异,但对其他必要的手段持开放态度。

4

1 回答 1

4

看,$interval是一个对象,而不是一些原始值。在您的示例中,此间隔两年、零个月和零天组成。当您查询其属性时,它不会自动转换为“以月为单位的间隔,以天为单位的间隔”等:它只是返回它们的值。这是非常正确的:例如,您是否应该考虑每月间隔 29 天?

唯一的例外是$days属性(不是$d!),它实际上具有该间隔内的天数计算值。它在文档中有很好的描述:

$days DateTime::diff() 计算中开始日期和结束日期之间的
总天数

于 2012-07-17T22:05:41.040 回答