Código PHP:
Ver original '01-01', // Año Nuevo (irrenunciable)
'10-04', // Viernes Santo (feriado religioso)
'11-04', // Sábado Santo (feriado religioso)
'01-05', // Día Nacional del Trabajo (irrenunciable)
'21-05', // Día de las Glorias Navales
'29-06', // San Pedro y San Pablo (feriado religioso)
'16-07', // Virgen del Carmen (feriado religioso)
'15-08', // Asunción de la Virgen (feriado religioso)
'18-09', // Día de la Independencia (irrenunciable)
'19-09', // Día de las Glorias del Ejército
'12-10', // Aniversario del Descubrimiento de América
'31-10', // Día Nacional de las Iglesias Evangélicas y Protestantes (feriado religioso)
'01-11', // Día de Todos los Santos (feriado religioso)
'08-12', // Inmaculada Concepción de la Virgen (feriado religioso)
'13-12', // elecciones presidencial y parlamentarias (puede que se traslade al domingo 13)
'25-12', // Natividad del Señor (feriado religioso) (irrenunciable)
);
$startDate = new DateTime( '2015-12-01' ); //inicia
$endDate = new DateTime( '2016-01-30' ); //termina
$interval = new DateInterval('P1D'); // intervalo de un día
/** @var \DateTime[] $date_range */
$date_range = new DatePeriod($startDate, $interval ,$endDate); //creamos rango de fechas
foreach($date_range as $date){
//Se considera el fin de semana y los feriados como no hábiles
if($date->format("N") <6 AND
!in_array($date->format("d-m"),$holiday)) $working_days[] = $date->format("Y-m-d"); // se asignan fechas validas
}
Recuerda probar el código, esto lo puedes meter fácilmente a una función o hacer una clase.