2012-09-20 39 views
1

給定一個月和一個工作日,我需要構建一個函數來檢索所有星期一,星期二,星期三,星期四和星期五的工作日數。PHP:獲取給定月份的工作日數字

比方說,我給的功能在這個月,2012年9月和工作日數1.函數應該檢索所有周一在2012年9月分別爲:3,10,17日和24

請注意,我平日1號是星期一,2號是星期二,3號是星期三,4號是星期四,5號是星期五。

到目前爲止,我已經完成了:獲得今日日期的一週中的第一天(我發佈了下面的函數)。但我不知道如何從這裏以一種簡單的方式跟蹤,我已經花了很多時間,我懷疑有更好的方法來做到這一點。你能告訴我怎麼樣?

function getFirstDayOfWeek($date) { 
    $getdate = getdate($date); 

    // How many days ahead monday are we? 
    switch ($getdate['wday']) { 
     case 0: // we are on sunday 
      $days = 6; 
      break; 

     default: // any other day 
      $days = $getdate['wday']-1; 
      break; 
    } 

    $seconds = $days*24*60*60; 
    $monday = date($getdate[0])-$seconds; 

    return $monday; 
} 

由於一噸

回答

2

不是很聰明,但會爲你工作:

// sept. 2012 
$month = 9; 

// loop through month days 
for ($i = 1; $i <= 31; $i++) { 

    // given month timestamp 
    $timestamp = mktime(0, 0, 0, $month, $i, 2012); 

    // to be sure we have not gone to the next month 
    if (date("n", $timestamp) == $month) { 

     // current day in the loop 
     $day = date("N", $timestamp); 

     // if this is between 1 to 5, weekdays, 1 = Monday, 5 = Friday 
     if ($day == 1 OR $day <= 5) { 

      // write it down now 
      $days[$day][] = date("j", $timestamp); 
     } 
    } 
} 

// to see if it works :) 
print_r($days); 
+0

哇!這是輝煌! – user523129

+0

謝謝!很高興聽到它的作品! :) – Mahdi

相關問題