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

Har*_*ldo 1 php

可能重复:
如何使用php查找两个日期之间的天数

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

Art*_*cto 17

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

(仅限PHP 5.3及更高版本)

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

strtotime("-1 days");
strtotime("-2 days");
...
strtotime("-n days");
Run Code Online (Sandbox Code Playgroud)

直到我们到达第一个日期的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
Run Code Online (Sandbox Code Playgroud)

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

  • +1使用[DateTime类](http://www.php.net/manual/en/class.datetime.php). (2认同)