【发布时间】:2019-11-20 12:09:08
【问题描述】:
我用DateTime::diff比较两个DateTime,但是结果很奇怪,好像abs($date1 - $date2) != abs($date2 - $date1)。
$date1 = new DateTime("1980-11-21 00:00:00");
$date2 = new DateTime("1981-11-20 00:00:00");
var_dump($date1->diff($date2,true)->days);
var_dump($date2->diff($date1,true)->days);
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"));
返回:
int(364)
int(364)
string(15) "00-11-30 00:0:0"
string(15) "00-11-29 00:0:0"
【问题讨论】:
-
因为没有第0天(只有-1和1)?猜猜
-
@l00k 这也是我的猜测
-
但是你为什么期望它是平等的呢?如果您及时前进或后退,那将是不同的天数。想象一下从昨天到今天(一年多),那将是 366 天,因为您必须整整一年 + 1 天。而且从今天到昨天只有 364 天,出于同样的原因,就是一整年减去一天。
-
对不起,我对你的评论一无所知:D
标签: php datetime datediff dateinterval