Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save herisonAssuncao/e68906f40cdc654e095ff5bc90f75571 to your computer and use it in GitHub Desktop.
Save herisonAssuncao/e68906f40cdc654e095ff5bc90f75571 to your computer and use it in GitHub Desktop.
Retorna um array com todos os feriados nacionais por ano.
<?php
use Exception;
use Throwable;
class FeriadoNacionalService
{
/**
* Busca todos os feriados nacionais por ano.
*
* @param integer $ano
* @return array
*/
public static function buscaTodosPorAno(int $ano = null): array
{
try {
$ano = $ano ? $ano : (int)(date('Y'));
$pascoa = easter_date($ano); // Limite de 1970 ou após 2037 da easter_date PHP consulta http://www.php.net/manual/pt_BR/function.easter-date.php
$diaPascoa = date('j', $pascoa);
$mesPascoa = date('n', $pascoa);
$anoPascoa = date('Y', $pascoa);
$feriados = array(
// Datas Fixas dos feriados Nacionais Basileiros
[
"data" => mktime(0, 0, 0, 1, 1, $ano),
'descricao' => 'Confraternização Universal - Lei nº 662, de 06/04/49'
],
[
'data' => mktime(0, 0, 0, 4, 21, $ano),
'descricao' => 'Tiradentes - Lei nº 662, de 06/04/49'
],
[
'data' => mktime(0, 0, 0, 5, 1, $ano),
'descricao' => 'Dia do Trabalhador - Lei nº 662, de 06/04/49'
],
[
'data' => mktime(0, 0, 0, 9, 7, $ano),
'descricao' => 'Dia da Independência - Lei nº 662, de 06/04/49'
],
[
'data' => mktime(0, 0, 0, 10, 12, $ano),
'descricao' => 'N. S. Aparecida - Lei nº 6802, de 30/06/80'
],
[
'data' => mktime(0, 0, 0, 11, 2, $ano),
'descricao' => 'Todos os santos - Lei nº 662, de 06/04/49'
],
[
'data' => mktime(0, 0, 0, 11, 15, $ano),
'descricao' => 'Proclamação da republica - Lei nº 662, de 06/04/49'
],
[
'data' => mktime(0, 0, 0, 12, 25, $ano),
'descricao' => 'Natal - Lei nº 662, de 06/04/49'
],
// Essas Datas dependem diretamente da data de Páscoa
[
'data' => mktime(0, 0, 0, $mesPascoa, $diaPascoa - 48, $anoPascoa),
'descricao' => '2º Feriado Carnaval'
],
[
'data' => mktime(0, 0, 0, $mesPascoa, $diaPascoa - 47, $anoPascoa),
'descricao' => '3º Feriado Carnaval'
],
[
'data' => mktime(0, 0, 0, $mesPascoa, $diaPascoa - 2, $anoPascoa),
'descricao' => '6ºfeira Santa'
],
[
'data' => mktime(0, 0, 0, $mesPascoa, $diaPascoa, $anoPascoa),
'descricao' => 'Páscoa'
],
[
'data' => mktime(0, 0, 0, $mesPascoa, $diaPascoa + 60, $anoPascoa),
'descricao' => 'Corpus Christi'
]
);
return array_sort($feriados, 'data', SORT_ASC);
} catch (Throwable $throwable) {
throw new Exception($throwable->getMessage());
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment