Funcao - calculo de feriados (pascoa, carnaval, corpus cristi, sexta feira santa) |
Top Previous Next |
|
Rotinas úteis para calcular os feriados varíaveis de Sábado de Carnaval, Sexta Feira Santa, Páscoa e Corpus Christi.
Sabado de Carnaval = Pascoa - 50 dias Terça de Carnaval = Pascoa - 47 dias Quarta de Cinzas = Pascoa - 46 dias Sexta Feira Santa = Pascoa - 2 dias Corpus Christi = Pascoa + 60 dias
type TFeriados = (frPascoa, frSabadoCarnaval, frCarnaval, frQuartaCinzas, frSextaSanta, frCorpusChristi);
// CALCULO DA PASCOA 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;
// CALCULA FERIADO function CalculaFeriado(AAno: Word; ATipo: TFeriados): TDateTime; var A: TDateTime; begin A := CalculaPascoa(AAno); Case ATipo of frCarnaval : A := A - 50; frSabadoCarnaval: A := A - 46; frQuartaCinzas : A := A - 47; frSextaSanta : A := A - 2; frCorpusChristi : A := A + 60; end; Result := A; end;
|