Função para calcular feriados móveis

Esta função retornará a data de todos os feriados móveis do calendário brasileiro. (Pascoa, Carnaval, QuartaCinzas, SextaSanta, CorpusChristi)

type TFeriados = (frPascoa, frCarnaval, frQuartaCinzas, frSextaSanta, frCorpusChristi); function CalculaPascoa(AAno: Word): TDateTime; function CalculaFeriado(AAno: Word; ATipo: TFeriados): TDateTime; function CalculaPascoa(AAno: Word): TDateTime; var R1, R2, R3, R4, R5 : Longint; FPascoa : TDateTime; VJ, VM, VD : Word; begin R1 := AAno mod 19; R2 := AAno mod 4; R3 := AAno mod 7; R4 := (19 * R1 + 24) mod 30; R5 := (6 * R4 + 4 * R3 + 2 * R2 + 5) mod 7; FPascoa := EncodeDate(AAno, 3, 22); FPascoa := FPascoa + R4 + R5; DecodeDate(FPascoa, VJ, VM, VD); case VD of 26 : FPascoa := EncodeDate(Aano, 4, 19); 25 : if R1 > 10 then FPascoa := EncodeDate(AAno, 4, 18); end; Result:= FPascoa; end; function CalculaFeriado(AAno: Word; ATipo: TFeriados): TDateTime; var Aux: TDateTime; begin Aux := CalculaPascoa(AAno); Case ATipo of frCarnaval : Aux := Aux - 47; frQuartaCinzas : Aux := Aux - 46; frSextaSanta : Aux := Aux - 2; frCorpusChristi: Aux := Aux + 60; end; Result := Aux; end;
Listagem 1. NOME

Artigos relacionados