Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 计算两个给定日期之间的天数_Php_Date - Fatal编程技术网

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

Php 计算两个给定日期之间的天数,php,date,Php,Date,有人能纠正我脚本中的错误,计算两个日期之间的天数吗。 日期已通过表格输入,变量信息如下: [departon] => Array ( [0] => 1 [1] => June [2] => 2011 ) [returnon] => Array ( [0] => 31 [1] => June [2] => 2011 ) 我已经编写了计算这些日期的代码,但它不计算日期,它只输出0 <?php $first_date = mktime

有人能纠正我脚本中的错误,计算两个日期之间的天数吗。 日期已通过表格输入,变量信息如下:

[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"; 
?>

非常感谢您的帮助

指定了月份的数字,因此您需要将“June”转换为“6”。

指定了月份的数字,因此您需要将“June”转换为“6”。

这里有一个简单的方法:

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

$diff = floor(($return - $depart) / (60 * 60 * 24));
注意:六月只有30天。

这里有一个简单的方法:

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

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

注意:六月只有30天。

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

考虑这一点:

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_转储将允许您查看可以从中提取的不同类型的时间

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
最简单的方法是使用datetimes

考虑这一点:

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_转储将允许您查看可以从中提取的不同类型的时间

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
嗨,兰斯,你能再详细解释一下这一点吗?第四个参数是月份:$\u POST['departion'][1]。。。。。。我的代码中有错误吗?或者我只是没有抓住要点?@新手,是的,我发现了我的错误并修改了我的答案。你似乎给mktime一个月的值是‘June’,而不是数字6。哦,好的,谢谢。我将尝试转换,欢迎更多帮助。嗨,兰斯,你能再详细说明一下这一点吗?第四个参数是月份:$\u POST['departion'][1]。。。。。。我的代码中有错误吗?或者我只是没有抓住要点?@新手,是的,我发现了我的错误并修改了我的答案。你似乎给mktime一个月的值是‘June’,而不是数字6。哦,好的,谢谢。将尝试转换,欢迎提供更多帮助。请注意,在堆栈溢出时,您不需要输入诸如“Hello”、“Thank in Prevance”和“help将不胜感激”之类的内容。这不是一个论坛,我们只是在这里进行问答。请注意,在堆栈溢出上,您不需要输入诸如“您好”、“提前感谢”和“非常感谢您的帮助”之类的内容。“这不是一个论坛,我们只是在这里进行问答。这是我刚要发布的解决方案,但你抢先了我一步,@netcoder。”。“干得好。这是我正要发布的解决方案,但你抢先了我一步,@netcoder。”。做得好。