Php DateTime差异返回错误的值

Php DateTime差异返回错误的值,php,datetime,Php,Datetime,我想使用datetime对象返回从现在到某个datetime之间的天数。我的约会是: $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_da

我想使用datetime对象返回从现在到某个datetime之间的天数。我的约会是:

$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)

有人知道为什么吗


谢谢

您需要使用
日期间隔::$days
以天为单位获取总数

DateInterval::$d
只是天数,但以“分组形式”,即对于
DateInterval::$d
而言,32天的差异将返回2,对于
DateInterval::$m
,则返回
1

$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天


您可以在

中看到更多类似内容:您可以使用
%a
而不是
%d
来获取总天数