即使 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);
我试图找出两个日期之间的差异并以月为单位显示。
$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);