我正在使用此函数来获取两个日期之间的月差。
$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?有没有什么方法可以让我在两次约会中有所不同?谢谢
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;
或更好:
$total_months = $interval->y * 12 + $interval->m;
您有年份和月份作为字段,无需使用格式获取零件作为文本,以便以后添加零件!
这有点棘手,需要一轮工作,请尝试以下操作就是这样。
$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个月。