[英]date_diff returns 0 if the difference is over a year
我正在使用此功能来获取两个日期之间的月份差。
$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
月12
2015-11-08 to 2014-10-10
12
月12
是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个月的时间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.