Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/12/2015, 08:18
Avatar de el_cesar
el_cesar
 
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 22 años, 10 meses
Puntos: 20
Calcular Festivos y Fines de Semana

Para una herramienta que estoy desarrollando necesito calcular dias hábiles y festivos, googleando me encontré este código que lo hace

Código PHP:
Ver original
  1. function DiasHabiles($fecha_inicial,$fecha_final)
  2. {
  3. list($dia,$mes,$year) = explode("-",$fecha_inicial);
  4. $ini = mktime(0, 0, 0, $mes , $dia, $year);
  5. list($diaf,$mesf,$yearf) = explode("-",$fecha_final);
  6. $fin = mktime(0, 0, 0, $mesf , $diaf, $yearf);
  7.  
  8. $r = 1;
  9. while($ini != $fin)
  10. {
  11. $ini = mktime(0, 0, 0, $mes , $dia+$r, $year);
  12. $newArray[] .=$ini;  
  13. $r++;
  14. }
  15. return $newArray;
  16. }
  17.  
  18.  
  19. function Evalua($arreglo)
  20. {
  21. $feriados        = array(
  22. '1-1',  //  Año Nuevo (irrenunciable)
  23. '10-4',  //  Viernes Santo (feriado religioso)
  24. '11-4',  //  Sábado Santo (feriado religioso)
  25. '1-5',  //  Día Nacional del Trabajo (irrenunciable)
  26. '21-5',  //  Día de las Glorias Navales
  27. '29-6',  //  San Pedro y San Pablo (feriado religioso)
  28. '16-7',  //  Virgen del Carmen (feriado religioso)
  29. '15-8',  //  Asunción de la Virgen (feriado religioso)
  30. '18-9',  //  Día de la Independencia (irrenunciable)
  31. '19-9',  //  Día de las Glorias del Ejército
  32. '12-10',  //  Aniversario del Descubrimiento de América
  33. '31-10',  //  Día Nacional de las Iglesias Evangélicas y Protestantes (feriado religioso)
  34. '1-11',  //  Día de Todos los Santos (feriado religioso)
  35. '8-12',  //  Inmaculada Concepción de la Virgen (feriado religioso)
  36. '13-12',  //  elecciones presidencial y parlamentarias (puede que se traslade al domingo 13)
  37. '25-12',  //  Natividad del Señor (feriado religioso) (irrenunciable)
  38. );
  39.  
  40. $j= count($arreglo);
  41.  
  42. for($i=0;$i<=$j;$i++)
  43. {
  44. $dia = $arreglo[$i];
  45.  
  46.         $fecha = getdate($dia);
  47.             $feriado = $fecha['mday']."-".$fecha['mon'];
  48.                     if($fecha["wday"]==0 or $fecha["wday"]==6)
  49.                     {
  50.                         $dia_ ++;
  51.                     }
  52.                         elseif(in_array($feriado,$feriados))
  53.                         {    
  54.                             $dia_++;
  55.                         }
  56. }
  57. $rlt = $j - $dia_;
  58. return $rlt;
  59. }
  60.  
  61. $CantidadDiasHabiles = Evalua(DiasHabiles('19-10-2010','28-12-2010'));
  62.  
  63. echo   $CantidadDiasHabiles;
Sin Embargo, al ejecutarlo arroja unos NOTICES, que al parecer no afectan la ejecución del script pero son molestos a la hora de implementarlo, le he dado vueltas al código y no logro solucionarlos, alguien me puede dar una mano (que no sea ocultar los NOTICES en php.ini) gracias
__________________
Say no more.......