Php datetime显示额外的一天

Php datetime显示额外的一天,php,datetime,Php,Datetime,我使用这段代码来计算两个日期之间的天数、月份等 $datetime1 = new DateTime('2013-12-01'); $datetime2 = new DateTime('2014-08-01'); $interval = $datetime1->diff($datetime2); $year = $interval->format('%y'); $month = $interval->format('%m'); $day = $interval->form

我使用这段代码来计算两个日期之间的天数、月份等

$datetime1 = new DateTime('2013-12-01');
$datetime2 = new DateTime('2014-08-01');

$interval = $datetime1->diff($datetime2);
$year = $interval->format('%y');
$month = $interval->format('%m');
$day = $interval->format('%d');

var_dump($interval->days, $year, $month, $day);
我得到的结果是:

int(243) 
string(1) "0" 
string(1) "8" 
string(1) "1"
为什么要多加一天?对我来说好像只有8个月

2014-01-01 - 2014-09-01 //8 months 0 days..
2014-04-01 - 2014-12-01 //7 months 30 days...
,这是意料之中的

注意:DateInterval::format()方法不会重新计算进位 时间字符串或日期段中的时间点。这是意料之中的 因为不可能溢出像“32天”这样的值 可以解释为“1个月零4天”到“1个月” 和1天”


上限-下限+1
是通用公式
2014-01-01
-
2014-09-01
=8个月0天
2014-04-01
-
2014-12-01
=7个月30天…我正在phpcodepad.com上尝试这段代码,它没有额外的一天。有趣的是,phpcodepad是PHP5.3.23。我们使用的是5.4.21“栅栏柱”问题:数一数柱子,而不是中间的空间。我猜他们不想返回0。