如果差异超过一年,则date_diff返回0



我正在使用此函数来获取两个日期之间的月差。

$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-1012的月份变成一年。所以它返回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个月。

最新更新