/** * Calcula la cantidad de días hábiles transcurridos desde la * fecha inicial hasta la fecha actual. * Tiene en cuanta los días feriados en Guatemala * * @param date $fecha_inicial fecha inicial en formato AAAA-MM-DD * @return String días hábiles desde la fecha inicial */ function dias_habiles($fecha_inicial) { $fecha1 = date_create($fecha_inicial); $fecha2 = date_create(date('Y-m-d')); $intervalo = date_diff($fecha1, $fecha2); $dias_totales = $intervalo->format('%a'); // Dias feriados: // Semana Santa 2021: 04/01 y 04/02 // Semana Santa 2022: 04/14 y 04/15 // Semana Santa 2023: 04/06 y 04/07 $dias_feriados = array( '01-01', // Año nuevo '04-01', // Jueves Santo 2019 '04-02', // Viernes Santo 2019 '05-01', // Día del trabajo '06-30', // Día del Ejército '08-15', // Día de la Virgen de la Asunción '09-15', // Día de la Independencia '10-20', // Aniversario de la Revolución de Octubre '11-01', // Día de los muertos '12-24', // Nochebuena '12-25', // Navidad '12-31' // Noche vieja ); // Dejamos fuera sabados y domingos $finde = array(0, 6); // 0: domingo, 6:sabado $restar = 0; for ($i = 1; $i <= $dias_totales; $i++) { date_add($fecha1, date_interval_create_from_date_string('1 days')); $dia_activo = date_format($fecha1, 'Y-m-d'); $dia_semana = date_format($fecha1, 'w'); $dia_finde = date_format($fecha1, 'D'); $fecha = date_format($fecha1, 'm-d'); if (in_array($dia_semana, $finde) OR in_array($fecha, $dias_feriados)) { // sabado, domingo o día feriado quitamos un día $restar++; } } return str_pad($dias_totales - $restar, 2, "0", STR_PAD_LEFT); }