Ver Mensaje Individual
  #3 (permalink)  
Antiguo 12/11/2018, 07:04
Avatar de xfxstudios
xfxstudios
 
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: sumar dias habiles en cha mas no dias fines de semana

Ve si te sirve esta funcion, recibe un array como con los parametros a procesar y retorna un array con las fechas sin sábados ni domingos, tambien puedes pasarle un array como tercer paranmetro con los dias feriados a excluir del periodo


Código PHP:
Ver original
  1. /**
  2.      * Retorna un array con los dias habiles en un rango dado
  3.      * recibe un arra con la data a procesar
  4.      * array('fecha1','fecha2',array feriados)
  5. * Data ['fecha iniciio','fecha fin',[array de feriados si los hay]]
  6.      */
  7.     function diashabiles($X){
  8.         $timezone = $this->city($this->IPreal())->timezone;
  9.         date_default_timezone_set($timezone);
  10.  
  11.         $inicio = new \DateTime($X[0]);//Inicio
  12.         $final = new \DateTime($X[1]);//Fin
  13.  
  14.         // Meter fecha final en la operación.
  15.         $final->modify('+1 day');
  16.        
  17.         $intervalo = $final->diff($inicio);
  18.        
  19.         //Días totales
  20.         $dias = $intervalo->days;
  21.        
  22.         // Creamos un perido para que imprima los días (P1D es igual a 1 dia)
  23.         $periodo = new \DatePeriod($inicio, new \DateInterval('P1D'), $final);
  24.        
  25.         //Array con días de fiesta
  26.         $holidays = $X[2];//Array con días de fiesta
  27.    
  28.         foreach($periodo as $d) {
  29.             $pos = $d->format('D');
  30.        
  31.             if ($pos == 'Sat' || $pos == 'Sun') {
  32.                 $dias--;
  33.             }
  34.        
  35.             elseif (in_array($d->format('Y-m-d'), $holidays)) {
  36.                 $dias--;
  37.             }
  38.         }
  39.         return $dias;
  40.     }//
__________________
[email protected]
HITCEL