Skip to content

Instantly share code, notes, and snippets.

@herisonAssuncao
Last active December 3, 2020 15:51
Show Gist options
  • Save herisonAssuncao/dd3a29e45fa95176c03b9a6d6e2a4ddd to your computer and use it in GitHub Desktop.
Save herisonAssuncao/dd3a29e45fa95176c03b9a6d6e2a4ddd to your computer and use it in GitHub Desktop.
Busca dias úteis por período, podendo utilizar feriados como parâmetro.
<?php
class DiaUtilService
{
/**
* Busca dias úteis por período, podendo utilizar feriados como parêmetro
*
* @param string $dataInicio formato deve ser Y-m-d
* @param string $dataFim formato deve ser Y-m-d
* @param array $feriados datas de feriados com formato Y-m-d
* @return array
*/
public static function buscaDiasUteis(string $dataInicio, string $dataFim, $feriados = []): array
{
$inicio = strtotime($dataInicio);
$fim = strtotime($dataFim);
$datas = [];
while ($inicio <= $fim) {
/**
* Verifica se o dia é igual a sábado ou domingo, caso seja continua o loop
*/
$diaIgualFinalSemana = (date('D', $inicio) === 'Sat' || date('D', $inicio) === 'Sun');
/**
* Verifica se é feriado, caso seja continua o loop
*/
$diaIgualFeriado = (count($feriados) && in_array(date('Y-m-d', $inicio), $feriados));
/**
* Verifica se é dia útil, se for armazena a data no array
*/
if (!$diaIgualFinalSemana && !$diaIgualFeriado) {
$datas[] = date('Y-m-d', $inicio);
}
/**
* 86400 quantidade de segundos em um dia
*/
$inicio += 86400;
}
return $datas;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment