Date_Diff没有返回期望的结果

时间:2018-08-10 05:30:34

标签: php date datediff laravel-4.2

我有点困惑,我使用date_diff来获取-/ +整数中的天数差异,即使第二个日期比第一个日期高,它应该是-days,我也只能获得+ days。

$datetime1 = new DateTime("2018-01-09");
$datetime2 = new DateTime("2018-09-08");
$interval = $datetime1->diff($datetime2);
dd($interval->format('%R%a days'));

结果

string(9) "+242 days"

自date1到date2之后应该是-21天。

2 个答案:

答案 0 :(得分:2)

检查此输出不会使您感到困惑,它将使正确的输出对您的代码进行少量更改

// for negative difference output is -31days and date should be in yy-m-d format
$datetime1 = new DateTime("2018-02-01");
$datetime2 = new DateTime("2018-01-01");
$interval = $datetime1->diff($datetime2);
printf($interval->format('%R%a days'));

echo "<br>";

// for positive difference output is +31days and date should be in yy-m-d format
$datetime3 = new DateTime("2018-01-01");
$datetime4 = new DateTime("2018-02-01");
$interval = $datetime3->diff($datetime4);
printf($interval->format('%R%a days'));

//bellow is output i get which is correct

output

答案 1 :(得分:1)

我正在编辑答案,因为我认为您说的是 -21天而不是 -241天

因此,DateTime的标准是'Y-m-d'。

日期之间的差异将按以下方式计算:

$firstDate = new DateTime('2018-01-10');
$secondDate = new DateTime('2018-01-15');
$firstDate->diff($secondDate);

可以翻译为:

$secondDate - $firstDate;