Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.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 用户动态输入2个日期,并以天为差_Php_Date_Date Difference - Fatal编程技术网

Php 用户动态输入2个日期,并以天为差

Php 用户动态输入2个日期,并以天为差,php,date,date-difference,Php,Date,Date Difference,我试图实现的基本上是用户将输入2个日期,并在几天内返回差异。我在SO中看到了其他相关问题,但没有人回答我的问题 以下是我的代码: <html> <head> <?php $startdate = $_POST['startdate']; // starting date $enddate = $_POST['enddate']; // end date $now = strtotime($startdate); $your_date = strtotime($end

我试图实现的基本上是用户将输入2个日期,并在几天内返回差异。我在SO中看到了其他相关问题,但没有人回答我的问题

以下是我的代码:

<html>
<head>
<?php
$startdate = $_POST['startdate']; // starting date
$enddate = $_POST['enddate']; // end date
$now = strtotime($startdate);
$your_date = strtotime($enddate);
$datediff = $your_date - $now;
$number = floor($datediff/(60*60*24));
?>

</head>
<body>
<form name="date_form" action="" method="POST"">
<input type="text" name="startdate" value=""/>
<input type="text" name="enddate" value=""/>
<input type="submit" name="submit_start" value="Submit" />
</form>
</body>
</html>

您可以使用和进行日期计算。做起来容易多了


但如果要使用
date()

date()
函数获取第二个参数作为时间戳,并返回日期:
1970-1-1 00:00:00 GMT
+
给定时间戳
,请注意GMT部分。 这意味着如果您的时区为+2,则
回显日期(“Y-m-d H:i:s”,0)
返回
1970-1-1 2:00:00
1970-1-1 00:00

因此,你得到的结果是(真正不同的)+
2小时(你的时区)。如果坚持使用
date()
获取结果,则必须将最后几行更改为:

$number = floor( ( $datediff-$YOUR_TIME_ZONE ) /(60*60*24));


为什么要做for循环

$number = floor($datediff/(60*60*24));

$number
是以天为单位的差异。

$number
已包含天数。你还想要什么?但是我想要输出为一个数字(例如14,如果两个日期之间的差值为14天),我尝试了echo count($number),但是没有得到我想要的,你不需要计数$这个数字包含了不同的日子。我注意到在写作时,我感到非常尴尬。这是一个愚蠢的错误。