两个日期之间的十进制精度的月份



我想计算两个日期之间的月数。

例如:

2022-10-19 - 2022-12-06 ~ 1,6个月

我试过这个,但不是每个月都是30天,所以这不是一个好的解决方案:

$start = new DateTimeImmutable("2022-10-19");
$end = new DateTimeImmutable("2022-12-06");
$diffbetween = $start->diff($end);
$diffbetweenresult = round(($diffbetween->format('%a')) / 30, 2);

你能帮我吗?

非常感谢!

如果在计算中所有的天都是相等的权重,那么您只能按照下面的方法进行。一年的平均值为365.25天(每4年366天),那么一个月的平均值为30.4375天或2629800秒。此计算可以在一行中完成:

$start = "2022-10-19";
$end = "2022-12-06";
$floatMonth = (strtotime($end)-strtotime($start))/2629800;
//$floatMonth: float(1.5783709787817)

即使与整数月份存在差异,该计算也不会提供整数结果。从"2022年7月1日"开始半年的结果-"2023 - 01 - 01 -";是6.0465。结果不符合一般的期望。只有4年的时间是48个月。

最新更新