Calcular el día de Pascua

4068 vistas

El domingo de Pascua corresponde al primer domingo que sigue a la primera luna llena de primavera.
La función aquí expuesta calcula el día de Pascua para fechas entre 1583 y 4099.


delphi
  1. function Pascua(Ano : Integer): TDateTime;
  2. var
  3.   Y,G,C,X,Z,D,E,N,P,J,M: Integer;
  4. begin
  5.   { Algoritmo válido para fechas entre 1583 y 4099}
  6.   Y := Ano;
  7.   G := (Y mod 19) + 1;
  8.   C := Trunc((Y/100)) + 1;
  9.   X := Trunc(3 * C / 4) - 12;
  10.   Z := Trunc(((8 * C) + 5) / 25) - 5;
  11.   D := Trunc(((5 * Y) / 4) - X - 10);
  12.   E := ((11 * G)+ 20 + Z - X) mod 30;
  13.   if ((E = 25) and (G > 11)) or (E = 24) then
  14.     E := E + 1;
  15.   N := 44 - E;
  16.   if N <; 21 then
  17.     N := N + 30;
  18.   P := N + 7 - ((D + N) mod 7);
  19.   if P > 31 then
  20.     J := P - 31
  21.   else
  22.     J := P;
  23.   if J = P then
  24.     M := 3
  25.   else
  26.     M := 4;
  27.   Result := EncodeDate(Ano, M, J);
  28. end;