我使用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)
为什么不从最大值中减去最小值?伪代码:
$diff = max($date1, $date2) - min($date1, $date2)
这样,您应该始终获得相同和正确的结果。