几天的PHP日期差异?

mys*_*ner 84 php datediff date

有没有快速的方法来计算PHP中的日期差异?例如:

$date1 = '2009-11-12 12:09:08';
$date2 = '2009-12-01 08:20:11';
Run Code Online (Sandbox Code Playgroud)

然后做一个计算,$ date2减去$ date1

我读了php.net文档,但没有运气.有快速的方法吗?

小智 193

我建议使用date-> diff函数,如下例所示:

   $dStart = new DateTime('2012-07-26');
   $dEnd  = new DateTime('2012-08-26');
   $dDiff = $dStart->diff($dEnd);
   echo $dDiff->format('%r%a'); // use for point out relation: smaller/greater
Run Code Online (Sandbox Code Playgroud)

http://www.php.net/manual/en/datetime.diff.php

  • 使用`$ diffInDays =(int)$ dDiff-> format("%r%a");`来获取你可以直接使用的值,例如"-2"或"2"(参见http://www.php. net/manual/en/dateinterval.format.php,用于格式参数描述) (17认同)
  • 此函数需要php 5.3或更高版本,如@txyoji所述 (3认同)

txy*_*oji 50

strtotime会将您的日期字符串转换为unix时间戳.(自unix时代以来的几秒钟.

$ts1 = strtotime($date1);
$ts2 = strtotime($date2);

$seconds_diff = $ts2 - $ts1;
Run Code Online (Sandbox Code Playgroud)

  • 请注意,如果两个日期之间有时间变化(如春季或秋季),这可能会给您不同的结果.试试这个:echo strtotime('2013-03-30 21:00') - strtotime('2013-03-29 21:00'); echo strtotime('2013-03-31 21:00') - strtotime('2013-03-30 21:00'); 你得到86400和82800.结果实际上是正确的.但如果你除以86400得到你需要考虑的天数(所以最好使用日期差异功能). (11认同)
  • 如果您使用的是现代版本的 php,请使用 adam 的解决方案。PHP 有很多代码来解释与时间相关的异常。 (2认同)

小智 17

下面的代码将通过取出两个日期之间的差异来给出天数的输出.

$str = "Jul 02 2013";
$str = strtotime(date("M d Y ")) - (strtotime($str));
echo floor($str/3600/24);
Run Code Online (Sandbox Code Playgroud)