如何计算PHP中两个日期之间的天数?

can*_*boy 17 php date count

如果我有几个字符串$startDate并且$endDate设置为(例如)"2011/07/01"和"2011/07/17"(意味着2011年7月1日和2011年7月17日).我如何计算从开始日期到结束日期的天数?在给出的例子中,它将是17天.

axs*_*uul 41

这是实现它的原始方式

$startTimeStamp = strtotime("2011/07/01");
$endTimeStamp = strtotime("2011/07/17");

$timeDiff = abs($endTimeStamp - $startTimeStamp);

$numberDays = $timeDiff/86400;  // 86400 seconds in one day

// and you might want to convert to integer
$numberDays = intval($numberDays);
Run Code Online (Sandbox Code Playgroud)

  • 如果您的本地日期包含一次节省时间的转换,则无法正常工作,因为在这些日期您有23或25小时的日期. (4认同)
  • @Andy:如果您所说的“可靠”是指“字面意思”,当然,但问题是“例如”,而不是“我需要针对 2011 年这些特定日期的解决方案,并且不关心其他可能出现的任何问题日期”。 (2认同)

wup*_*tah 33

使用DateTime::diff(又名date_diff):

$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$interval = $datetime1->diff($datetime2);
Run Code Online (Sandbox Code Playgroud)

要么:

$datetime1 = date_create('2009-10-11');
$datetime2 = date_create('2009-10-13');
$interval = date_diff($datetime1, $datetime2);
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过调用获取整数的间隔$interval->days.

  • 根据文档(在顶部链接),这是PHP> = 5.3.0.下次,请在您的问题中包含PHP版本. (4认同)
  • 错误:$interval->days 返回 6015 天!如果我使用 $interval->format("%d"),它只返回日期之间的差异,而不考虑月份和年份。 (2认同)

Pau*_*ber 5

PHP 有一个 date_diff() 函数可以做到这一点。