PHP date_diff函数返回错误结果

时间:2020-02-26 19:08:54

标签: php date datediff

我试图在PHP中使用date_diff()查找两个日期之间的月数。众所周知,2019年3月1日至2020年1月31日之间的月数为11个月,但以下代码返回10个月。

$date1=date_create("2019-03-01");
$date2=date_create("2020-01-31");
$diff=date_diff($date1,$date2);
echo $diff->format("%m months");

输出

10 months

为什么此代码返回的时间少了1个月?

2 个答案:

答案 0 :(得分:2)

相差10个月又30天,这就是date_diff()返回的结果:

object(DateInterval)#3 (16) {
  ["y"]=>
  int(0)
  ["m"]=>
  int(10)
  ["d"]=>
  int(30)
  ["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(336)
  ["special_type"]=>
  int(0)
  ["special_amount"]=>
  int(0)
  ["have_weekday_relative"]=>
  int(0)
  ["have_special_relative"]=>
  int(0)
}

如@showdev的ETA在上面评论。

答案 1 :(得分:2)

如果您需要从第一天开始到午夜最后一天结束之间的月份数差异,还可以将结束日期设置为午夜(24h!)或添加一天。

<?php
$dateStart = date_create("2019-03-01");
$dateEnd = date_create("2020-01-31");

//set Time to midnight or add a day
$dateEnd->setTime(24,0,0);

$diff = date_diff($dateStart,$dateEnd);
echo $diff->format("%m months");
//11 months

try self.