2014-04-21 2 views
0

나는 왜 아래 코드가 총 일수를 계산해야하는지 이해할 수없는 일부 날짜에는 정상적으로 작동하는이 코드를 가지고 있습니다. leavefrom = 2014-04-21과 leaveto = 2014-05-02를 선택하면 총 8 일이지만 9 일 9 일이어야합니다. 여기 날짜 계산 총 일수

는 달력입니다 : -

enter image description here

function total_day($leavefrom, $leaveto){ 
     $start_date=strtotime($leavefrom); 
     $cur_day=$start_date; 
     $end_day=strtotime($leaveto); 
     $count=0; 

     $holiday=array("2014-05-01"=>"Labour Day", "2014-08-31"=>"Independence Day", "2014-12-25"=>"Christmas"); 

     while(1){ 

      //echo date("Y/m/d", $cur_day)."<br/>"; 
      $cur_day=$cur_day +(3600*24); 
      //echo $count."S--".date("Y-m-d", $cur_day)."<-----E--".$end_day; 


      $day_of_week=date('w', $cur_day); 
      //echo "day_of_week-----".$day_of_week."<br/>"; 
      if ($day_of_week == 0 || $day_of_week == 6) { 
       //No Operation 
      }else if(array_key_exists(date("Y-m-d", $cur_day), $holiday)){ 
       //echo "Holiday because of ".$holiday[date("Y-m-d", $cur_day)]; 
      }else{ 
       $count++; 
      } 
      //echo "Total day--".$count."<br/><br/>"; 

      if(($cur_day==($end_day+(3600*24)))||($cur_day>$end_day)){ 
       break; 
      } 

     } 
     //$count = $count + 1; 
     return $count; 

    } 

$totaldays = total_day($leavefrom, $leaveto); 
+0

왜 표준'날짜 시간 :: diff' (또는'date_diff')를 사용하지 : 그럼 당신은이를 사용할 수 있습니까? http://www.php.net/manual/en/datetime.diff.php –

+0

@TravelingTechGuy 아니요, 시작일부터 종료일까지 계산해야합니다. 만약 우리가 그것을 계산한다면, 그것은 실제로 다른 가치를 생산할 것입니다. – Furry

답변

0

내가 거기에 어떤 오류가 발생하는 것입니다. 2014-04-21에서 2014-05-02까지는 주말 2 일과 휴일 1 일 중 11 일 (2014-05-01)이 있습니다. 따라서 만들기 11 days - 3 days = 8 days

하지만 시작 날짜도 포함하려는 경우.

while(1){  
    if($cur_day>$end_day){ 
     break; 
    } 
    $day_of_week=date('l', $cur_day); 
    if (in_array($day_of_week,array('Saturday','Sunday'))) { 
     // NO operation 
    }else if(array_key_exists(date("Y-m-d", $cur_day), $holiday)){ 
     // NO operation 
    }else{ 
     $count++; 
    } 
    $cur_day=$cur_day +(3600*24); 

} 
+0

니스. 솔루션을 가져 주셔서 감사합니다. – Furry

관련 문제