我正在使用此功能获取两个日期之间的月份差异。
$interval = date_diff(date_create('2015-10-08'), date_create('2014-10-10'));
$total_months = $interval->format('%m');
结果: 11(这是正确的!)
但是,当差异超过一年时,
$interval = date_diff(date_create('2015-11-08'), date_create('2014-10-10'));
$total_months = $interval->format('%m');
结果: 0(那是错误的!)
为什么它会返回0?有什么方法可以让我在任何两个日期之间有所区别吗?谢谢!
答案 0 :(得分:6)
2015-11-08 to 2014-10-10
12
个月成为一年。所以它返回0
个月。计算从$interval
开始,然后将(year * 12)
添加到月数的年数。这里的例子......
$interval = date_diff(date_create('2015-11-08'), date_create('2014-10-10'));
$year = $interval->format('%Y');
echo $total_months = $interval->format('%m') + $year * 12;
答案 1 :(得分:1)
或更好:
$total_months = $interval->y * 12 + $interval->m;
您有多年和几个月的字段,无需使用格式获取部分作为文本以便以后添加部分!
答案 2 :(得分:1)
这有点棘手,需要一轮工作,尝试以下,这可能 是的。
$first = new DateTime('2015-11-08',new DateTimeZone('America/New_York'));
$second = new DateTime('2014-10-10',new DateTimeZone('America/New_York'));
$diff = $second->diff($first);
$months = (Int)($diff->days/30);
echo "The two dates have $months months between them.";
输出:两个日期之间有13个月。