使用DateInterval计算两个日期之间的月份,而不是在一年内换行

时间:2013-03-12 13:31:52

标签: php datetime dateinterval

我知道这个话题非常耗尽,但显然还不够!

$temp_d1 = new DateTime(date('Y-m-d', $fromTime)); // 2012-01-01
$temp_d2 = new DateTime(date('Y-m-d', $endTime)); // 2013-02-01
$interval = $temp_d2->diff($temp_d1); 
$monthsAhead = $interval->format('%m'); // returns 1, but I am expecting 13

如何计算两个日期之间的月数,而不是在12个月内进行包装?

1 个答案:

答案 0 :(得分:15)

我真的很困惑:

$monthsAhead = $interval->format('%m');

确实

显然,格式('%m')只是格式化DateInterval对象的月组件,不一定' 给我一个区间作为月数'。

就我而言,我一直在寻找/做到这一点:

$monthsAhead = $interval->m + ($interval->y * 12);

http://www.php.net/manual/en/class.dateinterval.php

希望这对未来的其他傻瓜有所帮助!