繁体   English   中英

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

[英]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 1212 2015-11-08 to 2014-10-10 121212个月成为一年。 因此它返回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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM