任何人都可以更正我的脚本中的错误来计算两个日期之间的天数。 日期已通过表单输入,变量信息如下:
[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";
?>
非常感谢帮助。
答案 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'。