2012-09-07 83 views
0

我有這樣的情況。我存儲在數據庫字符串,像這樣:如何計算PHP中兩個日期之間的營業日數?

$string: 1,1,1,1,1,1,0 

這意味着:星期日是0(假日),所有其他的日子(星期一......星期六)均爲1

然後,我有兩個日期:今天(例如:2012-09-07)和一些結束日期(2012-10-04)。

我想知道我應該怎麼做才能獲得今天和這個結束日期之間的工作日總數(扣除假期)(在我的例子中是23天)?我們應該使用存儲在數據庫中的字符串。

+1

請問您是否可以包含您的代碼,這很難讓您瞭解。 – jtheman

+1

看看這裏:http://stackoverflow.com/questions/336127/calculate-business-days,它看起來比你的方法更有前途,1,1,1,1,1,1,0 – Najzero

+0

謝謝jtheman。我想這個問題的解決方案,但我不能。所以我沒有編碼。 –

回答

2
$workdays = explode(",", "1,1,1,1,1,1,0"); // turn string to array (Monday to Sunday) 
$days = 0; 
$time = strtotime("2012-09-07"); 
$end_time = strtotime("2012-10-04"); 
while ($time < $end_time) 
    { 
     $day_of_week = date("N", $time) - 1; // 0 = Monday, 6 = Sunday 
     if ($workdays[$day_of_week] == 1) 
      { 
       $days++; 
      } 
     $time = strtotime("+1 day", $time); // add one day to time 
    } 

這應該爲你工作。您可能需要根據其是否包含在內,是否應該啓動等方式對其進行修改。

+0

非常感謝。也許這是我需要的。 –

+0

我剛剛測試了這些代碼,併爲這些日期生成了23天。 – Yoda

+0

要使用現有的數組結構(Mon-Sun),可以使用'$ day_of_week = date(「N」,$ time)-1;'來代替。 – Yoda

相關問題