所以我试图计算一个日期偏离另一个日期的天数。目前我正在使用:
$now = new DateTime();
$dateToCompare = new DateTime("<filled from DB>");
$diff = $now->diff($dateToCompare);
echo $diff->format("%R%a");
我发现这是比较日期并给出相对于24小时时段的偏移,而不是日历天。
例如,这些日期的偏移量为0(我希望它为1):
2012-10-11 19:27:04和 2012-10-12 06:50:00
我是否正确使用此功能?我希望这是1的偏移量;但经过大量调试后,我发现这是我在日期偏移中实际看到的差异的根源。
(时区也按PHP建议设置)
提前感谢您的帮助!
答案 0 :(得分:3)
尝试使用DateTime::createFromFormat仅使用月,日和年创建对象。
也许尝试以下未经测试的代码:
$now = DateTime::createFromFormat('Y-m-d', date('Y-m-d')); // Note that if no timestamp is given, it uses the current time instead of 12am
$dateToCompare = DateTime::createFromFormat('Y-m-d', "<filled from DB>"); //match format of db datetime
$diff = $now->diff($dateToCompare);
echo $diff->format("%R%a");
答案 1 :(得分:1)
如果您正在寻找一种简单的方法,可以试试这个
$date1 = strtotime("2012-10-11 19:27:04");
$date2 = strtotime("2012-10-12 06:50:00");
$diff = ($date1-$date2);
echo date('j',$diff)." days";
输出为31天
您可以替换&#39;&#39;这里支持日期格式字符 http://php.net/manual/en/function.date.php
答案 2 :(得分:0)
只需使用年,月和日期:
$now = strtotime(Date("Y-m-d", strtotime("2012-10-12 06:50:00")));
$pre = strtotime(Date("Y-m-d", strtotime("2012-10-11 19:27:04")));
var_dump(($now-$pre)/86400);
在我的环境中DateTime
不起作用。