php中的天数差异

时间:2012-10-12 02:34:53

标签: php date diff

所以我试图计算一个日期偏离另一个日期的天数。目前我正在使用:

$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建议设置)

提前感谢您的帮助!

3 个答案:

答案 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不起作用。