我正在使用此代码计算2个日期之间的天数,月数等
$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...
答案 0 :(得分:1)
From the document ,这是预期的。
注意:DateInterval :: format()方法不会重新计算进位数 超过时间字符串或日期段。这是预料之中的 因为不可能溢出像“32天”这样的值 可以解释为“1个月到4天”到“1个月”之间的任何内容 和1天“。