我会要求用户输入开始日期和结束日期。我想获取从开始到结束的所有日期并获取这些日期之间的天数。在给定开始和结束日期的情况下,如何在 PHP 中执行此操作。
问问题
1163 次
5 回答
0
此代码的最终结果将是天数。
$days = (strtotime(date("Ymd"))-strtotime("2010-08-20")) / (60 * 60 * 24); 回声$天;
于 2010-12-03T07:55:56.150 回答
0
阅读我对此主题的回答,并附上示例:
于 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 回答