PHP date_diff不考虑年份

时间:2017-05-17 14:21:28

标签: php datediff

我正在运行以下代码,希望月份差异为12,而是我得到0。阅读手册我找不到办法。

    $from = date_create_from_format('m/d/Y', '01/01/2017');
    $to = date_create_from_format('m/d/Y', '01/01/2018');
    die(date_diff($from, $to)->format('%m'));

结果是对的,但不考虑年份。我应该为date_diff考虑年份添加额外的参数吗?

1 个答案:

答案 0 :(得分:1)

因为DateInterval :: format()不会重新计算时间字符串或日期段中的结转点,所以您可以通过将年份乘以12个月并添加任何剩余月份来执行以下操作:

$from = date_create_from_format('m/d/Y', '01/01/2017');
$to = date_create_from_format('m/d/Y', '01/01/2018');
$interval = date_diff($from, $to);
echo $interval->m + 12*$interval->y; // 12

示例:http://sandbox.onlinephpfunctions.com/code/628292d8d0f1ea00e2086b3de059c2e913b1af7d

  

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