php日期计算循环?

时间:2012-01-17 07:45:14

标签: php date

我有一个日期计算循环,但我不知道如何编码以实现正确的输出

这是我当前的代码

//This code is showing all dates from range of date

$year1 = '2011';
$month1 = '10';
$day1 = '17';

$day1 = $day1 + 1;

$year2 = '2012';
$month2 = '03';
$day2 = '17';

$start_date = "$year1-$month1-$day1";
echo "Start Date = $start_date ";
$end_date = "$year2-$month2-$day2";
echo "End Date = $end_date ";

$date = mktime(0,0,0,$month1,$day1,$year1); //Gets Unix timestamp START DATE
$date1 = mktime(0,0,0,$month2,$day2,$year2); //Gets Unix timestamp END DATE
$difference = $date1-$date; //Calcuates Difference
$daysago = floor($difference /60/60/24); //Calculates Days Old


$i = 0;
while ($i <= $daysago +1) {
if ($i != 0) { $date = $date + 86400; }
else { $date = $date - 86400; }
$today = date('Y-m-d',$date);
//echo "$today ";

$yy = date('Y',$date);
$mm = date('m',$date);
$dd = date('d',$date);

echo "$mm-$dd-$yy <br/>";
$i++;
}

以上代码显示

2011年10月18日 2011年10月19日 2011年10月20日 2011年10月21日 2011年10月22日 2011年10月23日 2011年10月24日 2011年10月25日 2011年10月26日 2011年10月27日 2011年10月28日 2011年10月29日 2011年10月30日 2011年10月31日 2011年11月1日 2011年11月2日 2011年11月3日 11-04-2011 2011年11月5日  。  。 等等 2012年3月17日

我希望从特定的月份日获得输出,如下面的代码显示

11-17-2011
12-17-2011
01-17-2012
02-17-2012
03-17-2012

3 个答案:

答案 0 :(得分:1)

以下代码将生成您提到的输出:

$date1 = strtotime("2011-10-17");
$date2 = strtotime("2012-03-17");
$time = 0;
for($i = 0; ($time = strtotime("+$i month", $date1)) <= $date2; $i++) {
    echo date("m-d-Y\n", $time);
}

输出:

10-17-2011
11-17-2011
12-17-2011
01-17-2012
02-17-2012
03-17-2012

答案 1 :(得分:1)

试试这个

<?php
$dateMonthYearArr = array();
$fromDateTS = mktime(0,0,0,10,17,2011);
$toDateTS = mktime(0,0,0,3,17,2012);

for ($currentDateTS = $fromDateTS; $currentDateTS <= $toDateTS; $currentDateTS += (60 * 60 * 24)) {
    if (date('d',$currentDateTS)==17){
       $dateMonthYearArr[] = date('Y-m-d',$currentDateTS);
    }
}

echo  '<pre>';
print_r($dateMonthYearArr);
echo '</pre>';
?>

答案 2 :(得分:1)

不应该为用户提供日期的文本字段,而应该给他们一些更加万无一失的东西,比如三个下拉菜单,每个都有月,日和年:

<select id='month' name='month'>
<option value='01'>Jan</option>
<option value='02'>Feb</option>
etc...
</select>
<select id='day' name='day'>
<option value='01'>01</option>
<option value='02'>02</option>
etc...

您提交表单的php:

$month = $_POST['month'];
$day = $_POST['day'];
$year = $_POST['year'];
$no_dates = $POST['no_dates']; //the number of dates

$i = 0;
while ($i < $no_dates){
date = mktime(0,0,0,$month+$i,$day,$year)
print date('Y-m-d', $date)."<br/>";
$i = $i + 1;
}