Skip to content

Instantly share code, notes, and snippets.

@angelmartz
Last active April 11, 2022 17:11
Show Gist options
  • Save angelmartz/7694083 to your computer and use it in GitHub Desktop.
Save angelmartz/7694083 to your computer and use it in GitHub Desktop.
Obtener días hábiles en PHP
<?php
/**
* Metodo getDiasHabiles
*
* Permite devolver un arreglo con los dias habiles
* entre el rango de fechas dado excluyendo los
* dias feriados dados (Si existen)
*
* @param string $fechainicio Fecha de inicio en formato Y-m-d
* @param string $fechafin Fecha de fin en formato Y-m-d
* @param array $diasferiados Arreglo de dias feriados en formato Y-m-d
* @return array $diashabiles Arreglo definitivo de dias habiles
*/
public function getDiasHabiles($fechainicio, $fechafin, $diasferiados = array()) {
// Convirtiendo en timestamp las fechas
$fechainicio = strtotime($fechainicio);
$fechafin = strtotime($fechafin);
// Incremento en 1 dia
$diainc = 24*60*60;
// Arreglo de dias habiles, inicianlizacion
$diashabiles = array();
// Se recorre desde la fecha de inicio a la fecha fin, incrementando en 1 dia
for ($midia = $fechainicio; $midia <= $fechafin; $midia += $diainc) {
// Si el dia indicado, no es sabado o domingo es habil
if (!in_array(date('N', $midia), array(6,7))) { // DOC: http://www.php.net/manual/es/function.date.php
// Si no es un dia feriado entonces es habil
if (!in_array(date('Y-m-d', $midia), $diasferiados)) {
array_push($diashabiles, date('Y-m-d', $midia));
}
}
}
return $diashabiles;
}
var_dump(getDiasHabiles('2013-12-10', '2013-12-16', [ '2013-12-16' ]));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment