Olá, Existe um algoritimo para o calculo dos feriados moveis se chama algoritimo de gauss... uma implementação dele ficaria mais ou menos assim... public function vferiado($dia1,$mes1,$ano){ $dia=0;$mes=0; //Aqui informo os feriados fixos... $feriados = array(0=>array('dia'=>1,'mes'=>1),1=>array('dia'=>21,'mes'=>4),2=>array('dia'=>1,'mes'=>5),3=>array('dia'=>7,'mes'=>9), 4=>array('dia'=>12,'mes'=>10),5=>array('dia'=>2,'mes'=>11),6=>array('dia'=>15,'mes'=>11), 7=>array('dia'=>25,'mes'=>12)); // E aqui se inicia o algoritimo de gauss para gerar as datas dos feriados com datas não fixas... if(($ano>1582)&&($ano<1699)){ $x=22; $y=2; }else{ if(($ano>1700)&&($ano<1799)){ $x=23; $y=3; }else{ if(($ano>1800)&&($ano<1899)){ $x=24; $y=4; }else{ $x=24; $y=5; } } } $a = $ano % 19; $b= $ano % 4; $c= $ano % 7; $d = ((19 * $a)+ $x)%30; $e = ((2* $b)+(4 * $c)+(6 * $d)+$y) % 7; $dia= $d+$e-9; switch($dia){ // aqui são tratadas as exceções... case 26 : $dia = 19; break; case 25 : $dia = 18; break; default : break; } if(($d+$e)<10){ $pascoa = array('dia'=>$dia,'mes'=>3); $mes = 3; }else{ $pascoa = array('dia'=>$dia,'mes'=>4); $mes = 4; } $feriados[]=$pascoa; $sexta_feira_santa =array('dia'=>(int)date('d',mktime(0,0,0,$mes,$dia-2,$ano)),'mes'=>(int)date('m',mktime(0,0,0,$mes,$dia,$ano))); $feriados[]= $sexta_feira_santa; $terca_feira_carnaval =array('dia'=>(int)date('d',mktime(0,0,0,$mes,$dia-47,$ano)),'mes'=>(int)date('m',mktime(0,0,0,$mes,$dia-47,$ano))); $feriados[]= $terca_feira_carnaval; $quarta_de_cinzas = array('dia'=>(int)date('d',mktime(0,0,0,$mes,$dia-46,$ano)),'mes'=>(int)date('m',mktime(0,0,0,$mes,$dia-46,$ano))); $feriados[]= $quarta_de_cinzas; $corpus_christi = array('dia'=>(int)date('d',mktime(0,0,0,$mes,$dia+60,$ano)),'mes'=>(int)date('m',mktime(0,0,0,$mes,$dia+60,$ano))); $feriados[] = $corpus_christi; $achou = false; for($i =1;$i<=count($feriados)-1;$i++){ if(($dia1 == $feriados[$i]['dia'])and($mes1 == $feriados[$i]['mes'])){ $achou = true; } } return $achou; } Nessa função que criei, você passa como parametro dia, mes e ano e ala ira lhe retornar verdadeiro caso seja e false se não... Espero que tenha lhe ajudado... Abraços.