DateTime diff weired result

问题描述 投票:0回答:1

我使用DateTime::diff比较两个DateTime,但结果很奇怪。 abs($date1 - $date2) != abs($date2 - $date1)Demo

    $date1 = new DateTime("1980-11-21 00:00:00");
    $date2 = new DateTime("1981-11-20 00:00:00");
    var_dump($date1->diff($date2,true)->format("%Y-%m-%d %H:%i:%s"));
    var_dump($date2->diff($date1,true)->format("%Y-%m-%d %H:%i:%s"));
    var_dump($date1->diff($date2,true)->format("%Y-%m-%d %H:%i:%s") == $date2->diff($date1,true)->format("%Y-%m-%d %H:%i:%s"));

虽然返回

string(15) "00-11-30 00:0:0"
string(15) "00-11-29 00:0:0"
bool(false)
php datetime datediff dateinterval
1个回答
1
投票

为什么不从最大值中减去最小值?伪代码:

$diff = max($date1, $date2) - min($date1, $date2)

这样,您应该始终获得相同和正确的结果。

© www.soinside.com 2019 - 2024. All rights reserved.