Calculando os feriados nacionais com PHP

março 8th, 2019 by franklin Leave a reply »

Abaixo uma função que calcula uma lista de feriados nacionais do ano corrente até 2037. A mágica dos feriados dinâmicos, que tem como base a páscoa, é feita com a função easter_date() do PHP.



<?
function dias_feriados($ano = null){
  if ($ano === null){
    $ano = intval(date('Y'));
  }
 
  $pascoa     = easter_date($ano); // Limite entre 1970 a 2037 conforme 
 http://www.php.net/manual/pt_BR/function.easter-date.php
  $dia_pascoa = date('j', $pascoa);
  $mes_pascoa = date('n', $pascoa);
  $ano_pascoa = date('Y', $pascoa);
 
  $feriados = array(
    // Datas Fixas dos feriados brasileiros
    'Ano Novo' => mktime(0, 0, 0, 1,  1,   $ano), // Confraternização Universal - Lei nº 662, de 06/04/49
    'Tiradentes' => mktime(0, 0, 0, 4,  21,  $ano), // Tiradentes - Lei nº 662, de 06/04/49
    'Dia do Trabalhador' => mktime(0, 0, 0, 5,  1,   $ano), // Dia do Trabalhador - Lei nº 662, de 06/04/49
    'Independência do Brasil' => mktime(0, 0, 0, 9,  7,   $ano), // Dia da Independência - Lei nº 662, de 06/04/49
    'Nossa Senhora Aparecida' => mktime(0, 0, 0, 10,  12, $ano), // N. S. Aparecida - Lei nº 6802, de 30/06/80
    'Finados' => mktime(0, 0, 0, 11,  2,  $ano), // Todos os santos - Lei nº 662, de 06/04/49
    'Proclamação da República' => mktime(0, 0, 0, 11, 15,  $ano), // Proclamação da republica - Lei nº 662, de 06/04/49
    'Natal' => mktime(0, 0, 0, 12, 25,  $ano), // Natal - Lei nº 662, de 06/04/49
 
    // Essas datas dependem da páscoa
    'Segunda de Carnaval' => mktime(0, 0, 0, $mes_pascoa, $dia_pascoa - 48,  $ano_pascoa),//2ºferia Carnaval
    'Terça de Carnaval' => mktime(0, 0, 0, $mes_pascoa, $dia_pascoa - 47,  $ano_pascoa),//3ºferia Carnaval	
    'Sexta-feira da Paixão' => mktime(0, 0, 0, $mes_pascoa, $dia_pascoa - 2 ,  $ano_pascoa),//6ºfeira Santa  
    'Páscoa' => mktime(0, 0, 0, $mes_pascoa, $dia_pascoa     ,  $ano_pascoa),//Pascoa
    'Corpus Christi' => mktime(0, 0, 0, $mes_pascoa, $dia_pascoa + 60,  $ano_pascoa),//Corpus Cirist
  );
 
  asort($feriados);
 
  return $feriados;
}
 
$ano_=date("Y"); //ano corrente
for($i=$ano_; $i <= 2037; $i++){
	echo "=========== ANO $i ===========\n";
	foreach(dias_feriados($i) as $descricao => $data){
		echo date("d-m-Y",$data)." => $descricao\n";
	}
	echo "\n";
}
 
?>

Peguei a base do código de https://www.codigofonte.com.br/codigos/funcao-que-calcula-os-feriados-brasileiros-em-php

Advertisement

3 comments

  1. Lauro disse:

    show amigo vc merece um prêmio por isto

  2. Andre disse:

    Muito obrigado por fornecer esse código!!

  3. Nilknarf disse:

    Show filhão, muito bom esse codigo

Deixe um comentário