计算两个给定日期之间的天数

时间:2011-06-05 23:51:34

标签: php date

任何人都可以更正我的脚本中的错误来计算两个日期之间的天数。 日期已通过表单输入,变量信息如下:

[departon] => Array ( [0] => 1 [1] => June [2] => 2011 )     
[returnon] => Array ( [0] => 31 [1] => June [2] => 2011 ) 

我已经编写了计算这些日期的代码,但它没有计算当天,只输出0。

<?php
$first_date = mktime(12, 0, 0, $_POST['departon'][1], $_POST['departon'][0], $_POST['departon'][2]); 
$second_date = mktime(12, 0, 0, $_POST['returnon'][1], $_POST['returnon'][0], $_POST['returnon'][2]);
$days = $second_date-$first_date;
echo floor($days/60/60/24) . " days"; 
?>

非常感谢帮助。

3 个答案:

答案 0 :(得分:3)

最简单的方法是使用日期时间。

考虑一下:

var_dump(new DateTime('1 July 2007'));

$a = new DateTime('1 July 2007');
$b = new DateTime('1 June 2001');

var_dump($a->diff($b));

var_dump将允许您查看可以从中提取的不同时间。

object(DateInterval)[3]
  public 'y' => int 6
  public 'm' => int 1
  public 'd' => int 0
  public 'h' => int 0
  public 'i' => int 0
  public 's' => int 0
  public 'invert' => int 1
  public 'days' => int 2221

您可以使用

轻松地将数组转换为日期时间
$date = new DateTime(join(" ",$array));
$date2 = new DateTime(join(" ",$array2));
$diff = $date->diff($date2);

答案 1 :(得分:2)

这是一个简单的方法:

$depart = strtotime(implode(' ', $_POST['departon']));
$return = strtotime(implode(' ', $_POST['returnon']));

$diff = floor(($return - $depart) / (60 * 60 * 24));

注意:6月只有30天。

答案 2 :(得分:1)

mktime documentation指定月份的数字,因此您需要将'June'转换为'6'。