2009-07-01 72 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; 
} 

您可能要调整它有点取决于你是否想指望它为一天或零,如果一开始是在同一天结束。