我想计算两天之间的日期差异 . 问题是,当我计算天数时,计算中缺少一天(当天) .
可以说date1是20-12-2014,date2是21-12-2014 . 使用这两个日期的DateTime :: Diff的结果为0(我想成为1,而不是零)
我错过了什么不好或DateTime :: Diff计算日期差异,就像我上面解释的那样?
这是我正在使用的代码(我希望以天显示日期差异):
$currentDay = new DateTime();
$listDay = new DateTime($results["date"]);//from mysql database (output is like 21-12-2014
$interval = $currentDay->diff($listDay);
$daysLeft=(int)$interval->format("%r%a");
2 回答
就像@Matt在评论中已经说过的那样,你不仅要比较日期,还要比较日期和时间,在
$currentDay
变量中你将时间设置为当前时间,$listDay
中的时间设置为00:00:00
. 如果转储这两个变量,您可以快速查看,如print_r($currentDay);
和print_r($listDay);
.解决方案是创建
$currentDay
DateTime对象,时间设置为00:00:00
,这可以通过today
关键字轻松完成:演示
你应该确定你在两个不同的日期传递,因为如果你制作2个相隔1天的新DateTime对象,它会给你1天的差异 . 此外,您可以将最后两行缩短为一行: