2009-08-24 77 views

回答

5

什麼是這樣的:

​​

,你會得到輸出繼電器是:

string '2009-01-04' (length=10) 
string '2009-01-11' (length=10) 
string '2009-01-18' (length=10) 
string '2009-01-25' (length=10) 
string '2009-02-01' (length=10) 
string '2009-02-08' (length=10) 
string '2009-02-15' (length=10) 
string '2009-02-22' (length=10) 

對於每個週日的日期,以及:

int 8 

對於數星期日

(我趕緊查了,似乎這些日子確實週日)


這段代碼的作用是:

  • 第一,得到的第一個星期日的2009年01後的日期-01
  • 然後,只要當前日期在2009-02-23之前,在每次迭代中迭代
  • ,添加7 * 24 * 3600秒(每週7天,每天24小時,3600秒每小時)

注:我已更改日期的格式,使用YYYY-MM-DD,而不是DD-MM-YYY;它是通常使用的格式 - 因此,使用這個格式可能是一個好主意,確保strtotime能夠正常工作。 (不知道它會工作確定您的格式)

+0

如果我($ dateMax)結束日是星期日,然後它會顯示不正確的答案:( – coderex 2009-08-24 11:06:12

+0

如果要包括$ dateMax,並且不排除它,使用<=,而不是嚴格<在while循環的情況下可能會有所幫助 – 2009-08-24 11:12:51

0

可以計算出有多少周這兩個日期之間都在,應該有一些用PHP日期處理庫,然後週日的數量將是週數,您仍然需要查看第一個日期是否爲星期日,最後日期是週日或不處理日期範圍的邊緣。

可以看到一些例子here

2

這應該沒有任何循環的伎倆。

$start = mktime(0, 0, 0, $start_month, $start_day, $start_year); 
$end = mktime(0, 0, 0, $end_month, $end_day, $end_year); 
$days = ($end - $start)/86400; 
$sundays = $days/7 

// check if there are enough leftover days for one more sunday 
if((localtime($start)[6]+($days % 7) > 6) 
    $sundays++; 
0

在SO的某個地方看到了這個,我在我的項目中使用了它。無法追溯原始帖子。

// function to calculate number of given day within date range 
function number_of_days($day, $start, $end){ 
    $w = array(date('w', $start), date('w', $end)); 
    return floor((date('z', $end) - date('z', $start))/7) + ($day == $w[0] || $day == $w[1] || $day < ((7 + $w[1] - $w[0]) % 7)); 
} 

// define your dates 
$start = mktime(0, 0, 0, 1, 16, 2010); 
$end = mktime(0, 0, 0, 1, 25, 2010); 

// display the count 
echo number_of_days(0, $start, $end); 
+0

這不適用於多年,有時會給出錯誤的結果.. – ricricucit 2012-05-07 17:14:53

+0

這是原始帖子:http://stackoverflow.com/a/1654008/157873(已經修復) – w35l3y 2013-01-29 13:51:42

1
 $sunday=0; 
     for($i=1; $i<=date("t", strtotime("2012-09-01")); $i++) { 
      if(date("l", strtotime("2012-09-".$i)) === 'Sunday') { 
       $sunday++; 
      }  
     } 
     echo "no of Sunday=".$sunday; 
+0

你可以嗎用你的答案給出解釋? – 2012-09-28 12:28:21

相關問題