PHP.为什么日期对象在月上的差异在12个月后重置为0


PHP. Why does date object diff on month reset to 0 after 12 months?

今天是2015-07-08。

当我运行以下命令时,它返回0。它不应该返回12吗?日期是12个月前。类似地,如果$date='2014-06-03',它返回1。不应该是13吗?过去12个月内的所有日期都是正确计算的。

 $date = '2014-07-03';
 $datetime1 = new DateTime(date('Y-m-01', strtotime($date)));
 $datetime2 = new DateTime(date('Y-m-d'));      
 $interval = $datetime1->diff($datetime2);
 $months_ago = $interval->format('%m');
 echo "'n".$months_ago;

谢谢

日期是1 Year0 Months以前,而不仅仅是12个月以前。如果你也能看到年份,你就会明白了。

注意:

DateInterval::format()方法不会重新计算时间字符串和日期段中的结转点。这是预期的,因为不可能溢出像"32天"这样的值。可以理解为"1个月零4天";到"1个月零1天"。

您可以使用%a表示总天数,但我找不到总月数的标记。

参考