为什么日期时间>天总是返回正数

2022-08-30 09:57:56
// Difference from a date in the future:
$a = new DateTime('2000-01-01');
$b = new DateTime('2000-01-05');
$interval = $b->diff($a);
return $interval->days;             // Returns 4


// Difference from a date in the past:
$a = new DateTime('2000-01-01');
$b = new DateTime('1999-12-28');
$interval = $a->diff($b);           // Arguments swapped
return $interval->days;             // Returns 4

为什么这两个函数都返回正 4?如果日期是过去的日期,如何返回负数?


答案 1

您可以使用 DateInterval::format

return $interval->format("%r%a");

如果需要,强制转换为 int:

return (int)$interval->format("%r%a");


答案 2

如果 Date 是过去的,则反转将为 1。
如果 Date 是将来的,则反转将为 0。

$invert    = $interval->invert; 

推荐