PHP:以YYYY-MM-DD格式获取两个日期之间的天数

时间:2010-07-06 09:49:59

标签: php

  

可能重复:
  How to find number of days between two dates using php

有没有一种快速简便的方法来计算这种格式(YYYY-MM-DD)与PHP(不是MySQL)的两个日期字符串之间的天数差异?

3 个答案:

答案 0 :(得分:17)

$date1 = new DateTime("2010-07-06"); //inclusive
$date2 = new DateTime("2010-07-09"); //exclusive
$diff = $date2->diff($date1);
echo $diff->format("%a"); //3

(仅限PHP 5.3及更高版本)

我为PHP看到的唯一解决方案< 5.2是循环:

strtotime("-1 days");
strtotime("-2 days");
...
strtotime("-n days");

直到我们到达第一个日期的unix时间戳。从概念上讲,你可以通过首先猜测两天时间戳差异然后测试邻域的天数来更有效地进行。

为什么除以86400不起作用

date_default_timezone_set("Europe/Lisbon");
$date1 = strtotime("2010-03-28");
$date2 = strtotime("2010-03-29");
echo ($date2-$date1)/86400; //gives 0.95833333333333
$date1 = strtotime("2010-10-31");
$date2 = strtotime("2010-11-01");
echo ($date2-$date1)/86400; //gives 1.0416666666667

正如戈登正确指出的那样,如果以前将时区设置为“UTC”,则除以86400将是此问题的有效解决方案 - 只是不要忘记将其恢复到之前的值。

答案 1 :(得分:2)

您可以使用此功能获取两个date("Y-m-d H:i:s")之间的天数:

function dateDiff($dateStart, $dateEnd) 
{
    $start = strtotime($dateStart);
    $end = strtotime($dateEnd);
    $days = $end - $start;
    $days = ceil($days/86400);
    return $days;
}

答案 2 :(得分:1)

相关问题