0

我会要求用户输入开始日期和结束日期。我想获取从开始到结束的所有日期并获取这些日期之间的天数。在给定开始和结束日期的情况下,如何在 PHP 中执行此操作。

4

5 回答 5

0

此代码的最终结果将是天数。

$days = (strtotime(date("Ymd"))-strtotime("2010-08-20")) / (60 * 60 * 24); 回声$天;

于 2010-12-03T07:55:56.150 回答
0

阅读我对此主题的回答,并附上示例:

计算PHP中2个日期之间的小时数

于 2010-12-03T07:58:50.540 回答
0

在处理日期时,您可以按照 Ignacio 的建议转换为时间戳(秒)。但一般来说,如果可能的话,您最好在更高级别上使用实际日期和日期。

为此,请参阅 PHP 中内置的 DateTime 类:

http://www.php.net/manual/en/class.datetime.php

http://www.php.net/manual/en/class.dateinterval.php

这些在 PHP 5.2 中得到了很好的支持,但是 PHP 5.3 添加了更好的 DateTime 处理功能。

于 2010-12-03T07:49:43.590 回答
0

根据用户提供的输入,我很可能会使用类似的东西

$dateOne = (int)(mktime(0, 0, 0, $month1, $day1, $year1)/86400); //Get the first date as a unix timestamp, then convert to days.
$dateTwo = (int)(mktime(0, 0, 0, $month2, $day2, $year2)/86400); //Get the second date as a unix timestamp, then convert to days.

// Example
//$dateOne = (int)(mktime(0,0,0,12,03,2009)/86400);
//$dateTwo = (int)(mktime(0,0,0,08,19,2011)/86400);

$daysBetween = $dateTwo-$dateOne; //Calculate days between.

echo $daysBetween.'<br />'; //Echo the days between.

for ($i=1; $i=$daysBetween; $i++) { //Loop through every day between, echo the date of that day.
    echo date('Y-m-d', $dateOne*86400+($i*86400)).'<br />';
}

上面的代码会给你所有的日子,包括第一个和最后一个日期。要仅获取介于更改之间的那些:

for ($i=1; $i=$daysBetween; $i++) { //Loop through every day between, echo the date of that day.

至:

for ($i=2; $i<=$daysBetween; $i++) { //Loop through every day between, echo the date of that day.

已测试,效果很好。

注意:第一个日期必须在最后一个日期之前。

干杯查理

于 2010-12-03T08:06:35.087 回答
-1

将两个日期转换为时间戳,然后从一个计数到另一个,再转换回日期。

于 2010-12-03T07:46:47.693 回答