即使 PHP 中有超过 12 个日期,您能否以月为单位显示两个日期之间的差异?

Can you display the difference between two dates in months even if there's more than 12 in PHP?

我试图找出两个日期之间的差异并以月为单位显示。

$currentDate = date_create(date('Y-m-d'));
$expiryDate = date_create('2022-12-10');
$dateDiff = date_diff($currentDate, $expiryDate);
$formattedDateDiff = $dateDiff->format('%m');

当我 var_dump($formattedDateDiff) 它只是 returns 0. 改变 $expiryDate 显示它似乎是在几年后给出剩余的月份,即如果到期日期是 '2022-01-10',它会给出 1,因为从现在到那时有 3 年 和 1 个月,而我想要完整的 37 个月。

当我 var_dump($dateDiff) 查看我实际格式化的内容时,它 return 如下:

object(DateInterval)#830 (16) {
  ["y"]=>
  int(3)
  ["m"]=>
  int(0)
  ["d"]=>
  int(0)
  ["h"]=>
  int(0)
  ["i"]=>
  int(0)
  ["s"]=>
  int(0)
  ["f"]=>
  float(0)
  ["weekday"]=>
  int(0)
  ["weekday_behavior"]=>
  int(0)
  ["first_last_day_of"]=>
  int(0)
  ["invert"]=>
  int(0)
  ["days"]=>
  int(1096)
  ["special_type"]=>
  int(0)
  ["special_amount"]=>
  int(0)
  ["have_weekday_relative"]=>
  int(0)
  ["have_special_relative"]=>
  int(0)
}

因此,显然希望显示所有相关单元,而不仅仅是一个单元。有没有办法 return $dateDiff 对象中的总月数,而不仅仅是剩余的月份?我可以将天数除以 30,但这似乎是一种愚蠢的方法,而且由于月份等长度的不同,这并不是最准确的方法。

你不能把年份的差乘以 12 吗?

return $dateDiff->m + ($datediff->y * 12);