我有点困惑,我使用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天。
答案 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
答案 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;