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

时间:2015-07-08 04:44:34

标签: php datetime

今天是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 个答案:

答案 0 :(得分:1)

日期为1 Year0 Months前,而不仅仅是12个月前。如果你也看到这一年,你就会得到它。

  

注意:

     

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

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

<强> Reference