DateTime diff返回错误的值

时间:2018-03-08 19:03:23

标签: php datetime

我想使用DateTime对象返回NOW和某个日期时间之间的天数。我的约会时间是:

$now = "2018-03-08 14:00:00";
$last = "2018-02-06 20:00:00"; 

我这样做:

$now = new DateTime();
$last_dt = new DateTime($last);
$difference = $last_dt->diff($now);

$difference->format('%d');

$num_of_days = $difference->d;

出于一些奇怪的原因,$ num_of_days的值是1(而不是30)

有人知道为什么请吗?

谢谢

1 个答案:

答案 0 :(得分:3)

您需要使用DateInterval::$days来获取总天数。

DateInterval::$d只是天数,但在"分组表格中#34;,即DateInterval::$d1的{​​{1}}和DateInterval::$m的32天差异将返回2 }。

$last = "2018-04-10 20:00:00"; 

$now = new DateTime();
$last_dt = new DateTime($last);
$difference = $last_dt->diff($now);

echo "Difference: ".$difference->m." months and ".$difference->d." days, or ".$difference->days." days in total";

结果

  

差异:1个月和2天,或总共33天

Demo

您可以在the manual

中查看更多内容