2009-07-01 116 views
2

我開發了一個網頁,我需要從指定的日期計算x天,問題是我們排除了星期六和星期日。例如$ Shipdate = '06/30/2009',x是5意味着,我想要答案'7'[即30是星期二,因此5天后將是星期日,所以有兩個假期(星期六和星期日)所以我們加5 + 2(星期六和星期日)] = 7。請幫我找出,謝謝。從今天起X天后計算

+1

如果你找到適合你的人,你應該真的接受答案。 – 2009-11-03 20:31:41

回答

0
<?php 

// ** Set Beginning and Ending Dates, in YYYY-mm-dd format ** 
$begin = '2008-01-01'; 
$end = '2008-03-31'; 
$begin_mk = strtotime("$begin"); 
$end_mk = strtotime("$end"); 

// ** Calculate number of Calendar Days between the two dates 
$datediff = ($end_mk > $begin_mk ? ($end_mk - $begin_mk) : ($begin_mk - $end_mk)); 
$days = (($datediff/3600)/24); 
    $days = $days + 1; // to be inclusive of last date; 

// ** Count days excluding Sundays ** 
    $iteration = 0; 
    $numDaysExSunday = 0; 
for ($i=1; $i<=$days; $i++) { 
    $weekday = date("w", strtotime("$begin + $iteration day")); 
     echo "$weekday<br>"; 
    **// i change only this line to add saturday** 
    if ($weekday !== '0' && $weekday !== '6') { 
     $numDaysExSunday++; 
    } 
    $iteration++; 
} 

// ** Output number of days excluding Sundays ** 
echo $numDaysExSunday; 
?> 

我把它從

http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/PHP/Q_23499410.html

解決星期日除外,但需要更改只有一條線,排除週六,我把它寫在代碼

+1

您應該重命名該變量,並且還包括節假日。我會用一個返回它是否是營業日的函數替換週日比較。 – 2009-07-01 06:01:54

1

一般來說,你將需要能夠指定排除重要日期的日曆。考慮聖誕節或公衆假期。 This似乎是將考慮公共假期的代碼,您需要修改它或使用您的假期設置它。

0
function Weekdays($start,$end){ 
    $days=0; 
    if ($end <= $start) { 
     // This is invalid data. 
     // You may consider zero to be valid, up to you. 
     return; // Or throw an error, whatever. 
    } 
    while($start<$end){ 
     $dayofweek = date('w',$start); 
     if(6!= $dayofweek && 0 != $dayofweek){ 
      $days++; 
     } 
     $start = strtotime('+1 day',$start); 
    } 
    return $days; 
} 

您可能要調整它有點取決於你是否想指望它爲一天或零,如果一開始是在同一天結束。