PHP DateTime::diff生成零

PHP DateTime::diff生成零,php,Php,此函数生成0的结果: function time_difference($time1, $time2) { $dt1 = new DateTime($time1); $dt2 = new DateTime($time2); $difference = $dt1->diff($dt2); var_dump($difference); } 下面是var_dump的输出。是的,我确实验证了$time1和$time2是否具有有效的日期/时间 object(Dat

此函数生成0的结果:

function time_difference($time1, $time2) {
    $dt1 = new DateTime($time1);
    $dt2 = new DateTime($time2);

    $difference = $dt1->diff($dt2);
    var_dump($difference);
}
下面是var_dump的输出。是的,我确实验证了$time1和$time2是否具有有效的日期/时间

object(DateInterval)#7 (15) {
    ["y"]=> int(0)
    ["m"]=> int(0)
    ["d"]=> int(0)
    ["h"]=> int(0)               
    ["i"]=> int(0)
    ["s"]=> int(0)
    ["weekday"]=> int(0)
    ["weekday_behavior"]=> int(0) 
    ["first_last_day_of"]=> int(0)
    ["invert"]=> int(0)
    ["days"]=> int(0)
    ["special_type"]=> int(0)
    ["special_amount"]=> int(0)
    ["have_weekday_relative"]=> int(0) 
    ["have_special_relative"]=> int(0)
}

非常感谢您的帮助。

看起来您正在尝试从DateTime对象
$time1
构造DateTime对象。请求一个字符串。如果要将DateTime对象传递给函数,请尝试以下操作:

function time_difference($time1, $time2) {
    $difference = $time1->diff($time2);
    var_dump($difference);
}

看看你的问题。查看
DateTime
DateTime
是如何不同的颜色的?这是为什么?var_dump似乎在日期间隔上出错(可能取决于PHP版本)。请尝试使用
$difference->格式(“%y年、%m月、%d天、%H:%i:%s”)
。@Sammitch PHP类名通常不区分大小写。一致性很好,可以使它们保持一致。在我尝试获得差异之前,varDump会为$time1
object(DateTime)#5(3){[“date”]=>string(19)“2013-11-12 02:32:08”[“timezone\u type”]=>int(3)[“timezone”]=>string(14)“America/Denver”}
@CBroe有一个bug,但据报告已在2009年5月修复。我正在将一个字符串传递给函数
string(19)“2013-11-12 02:32:08”
。PHP版本是5.4.20 fyin在你上面的评论中,你说,
$time1
是一个DateTime对象对不起。我的意思是var_dump($dt1);产生
对象(DateTime){[“date”]=>string(19)“2013-11-12 02:32:08”[“timezone\u type”]=>int(3)[“timezone”=>string(14)“America/Denver”}
刚刚升级到PHP5.4.21,看看是否会有所不同。