2012-01-17 92 views
0

我有一個日期計算循環,但我不知道如何編碼,實現對輸出php日期計算循環?

這裏是我當前的代碼

//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月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日 -04-2011 11-05-2011 。 。 等 2012年3月17日

,我希望得到特定月份的一天是下面的代碼顯示輸出

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

這不是一個'寫我的代碼請'有點網站。你將不得不做一些努力來讓別人迴應代碼。 – Jeffrey 2012-01-17 07:58:11

+0

@Jeffrey我的歉意我編輯並添加了我的當前代碼 – idontknowhow 2012-01-17 09:06:27

+0

@idontknowhow檢查答案 – Dau 2012-01-17 09:24:13

回答

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; 
} 
+0

這一個是非常接近,我想要:)非常感謝你 – idontknowhow 2012-01-17 10:00:44

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 
+0

如果年份不同,該怎麼辦? – Dau 2012-01-17 09:23:27

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>'; 
?> 
+0

這一個完美的工作非常感謝你:) – idontknowhow 2012-01-17 09:42:03