Last active
December 3, 2020 15:51
-
-
Save herisonAssuncao/dd3a29e45fa95176c03b9a6d6e2a4ddd to your computer and use it in GitHub Desktop.
Busca dias úteis por período, podendo utilizar feriados como parâmetro.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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