Cálculo da Páscoa
O cálculo da data da Páscoa é fundamental na definição do calendário cristão desde os primórdios da cristandade, tornando-se definido na Idade Média.
A Páscoa é celebrada no primeiro domingo após a primeira lua cheia que ocorre depois do equinócio da Primavera (no hemisfério norte, outono no hemisfério sul), ou seja, é equivalente à antiga regra de que seria o primeiro Domingo após o 14º dia do mês lunar de Nisan. Poderá assim ocorrer entre 22 de Março e 25 de Abril.
Índice |
[editar] Cálculo da data da Páscoa recorrendo a tabela simples
- Divida o ano de interesse por 19
- Multiplique o resultado inteiro por 19
- Subtraia o ano em questão pelo resultado obtido
- Some 1 ao resto dessa divisão
Ao número final chamaremos de "X". Esse número é o "número dourado" que corresponde a uma data específica dada na tabela abaixo. A Páscoa será celebrada ao domingo seguinte à data encontrada na tabela. Caso a data já seja um domingo, a Páscoa é o domingo da semana seguinte.
Exemplo:
2020/19 = 106,31
106*19 = 2014
2020 - 2014 = 6
6+1 = 7 (Número dourado)
Consultando na tabela, chega-se a 8 de abril ou o domingo seguinte. A páscoa em 2020 será dia 12 de abril, já que dia 08 é quarta-feira.
| X | Data |
|---|---|
| 1 | 14 de Abril ou Domingo seguinte |
| 2 | 3 de Abril ou Domingo seguinte |
| 3 | 23 de Março ou Domingo seguinte |
| 4 | 11 de Abril ou Domingo seguinte |
| 5 | 31 de Março ou Domingo seguinte |
| 6 | 18 de Abril ou Domingo seguinte |
| 7 | 8 de Abril ou Domingo seguinte |
| 8 | 28 de Março ou Domingo seguinte |
| 9 | 16 de Abril ou Domingo seguinte |
| 10 | 5 de Abril ou Domingo seguinte |
| 11 | 25 de Março ou Domingo seguinte |
| 12 | 13 de Abril ou Domingo seguinte |
| 13 | 2 de Abril ou Domingo seguinte |
| 14 | 22 de Março ou Domingo seguinte |
| 15 | 10 de Abril ou Domingo seguinte |
| 16 | 30 de Março ou Domingo seguinte |
| 17 | 17 de Abril ou Domingo seguinte |
| 18 | 7 de Abril ou Domingo seguinte |
| 19 | 27 de Março ou Domingo seguinte |
[editar] Cálculo da data da Páscoa recorrendo a algoritmos
Fórmula 1: Algoritmo de Gauss (1900 a 2099)
Para calcular o dia da Páscoa (Domingo), usa-se a fórmula abaixo, onde o "ANO" deve ser introduzido com 4 dígitos. O operador MOD é o resto da divisão. A fórmula vale para anos entre 1901 e 2099. A fórmula pode ser estendida para outros anos, alterando X e Y conforme a tabela a seguir:
| Faixa de anos | X | Y | |
|---|---|---|---|
| 1582 | 1599 | 22 | 2 |
| 1600 | 1699 | 22 | 2 |
| 1700 | 1799 | 23 | 3 |
| 1800 | 1899 | 23 | 4 |
| 1900 | 1999 | 24 | 5 |
| 2000 | 2099 | 24 | 5 |
| 2100 | 2199 | 24 | 6 |
| 2200 | 2299 | 25 | 7 |
a=MOD(ANO;19) b=MOD(ANO;4) c=MOD(ANO;7) d=MOD((19*a)+X;30) e=MOD(((2*b)+(4*c)+(6*d)+Y);7) se: (d+e)<10 então o dia = (d+e+22) e mês=Março senão: dia=(d+e-9) e mês=Abril
exceções: # quando o domingo de Páscoa calculado for em 26 de Abril, corrige-se para uma semana antes, ou seja, 19 de Abril. # quando o domingo de Páscoa calculado for em 25 de Abril e d=28 e a>10, então a Páscoa é em 18 de Abril.
Fórmula 2: Algoritmo de Meeus/Jones/Butcher
Outro algoritmo que pode ser usado é o de Meeus/Jones/Butcher (para o calendário gregoriano), exposto por Jean Meeus em Astronomical Algorithms (1991):
a = MOD(ANO;19) b = ANO \ 100 c = MOD(ANO;100) d = b \ 4 e = MOD(b;4) f = (b + 8) \ 25 g = (b - f + 1) \ 3 h = MOD((19 × a + b - d - g + 15);30) i = c \ 4 k = MOD(c;4) L = MOD((32 + 2 × e + 2 × i - h - k);7) m = (a + 11 × h + 22 × L) \ 451 MÊS = (h + L - 7 × m + 114) \ 31 DIA = MOD((h + L - 7 × m + 114);31) + 1
Obs.: O sinal "\" refere-se à divisão obtendo o inteiro, por exemplo: 7\3 é igual a 2 e não a 2,333
Exemplo para o ano de 2008:
a = MOD(2008;19) = 13 b = 2008 \ 100 = 20 c = MOD(2008;100) = 8 d = 20 \ 4 = 5 e = MOD(20;4) = 0 f = (20 + 8) \ 25 = 1 g = (20 - 1 + 1) \ 3 = 6 h = MOD((19 × 13 + 20 - 5 - 6 + 15);30) = 1 i = 8 \ 4 = 2 k = MOD(8;4) = 0 L = MOD((32 + 2 × 0 + 2 × 2 - 1 - 0);7) = 0 m = (13 + 11 × 1 + 22 × 0) \ 451 = 0 MÊS = (1 + 0 - 7 × 0 + 114) \ 31 = 3 (Março) DIA = (1 + 0 - 7 × 0 + 114) mod 31 + 1 = 23 Ou seja, a Páscoa de 2008 cai a 23 de Março.
Abaixo, convertendo-o para a linguagem Transact-SQL Server, poderá ser facilmente adaptado para qualquer outra linguagem de programação:
CREATE FUNCTION fncPascoa (@ANO int)
RETURNS datetime
AS
BEGIN
DECLARE @DATA AS DATETIME
DECLARE @MES AS INT
DECLARE @DIA AS INT
DECLARE @A AS INT
DECLARE @B AS INT
DECLARE @C AS INT
DECLARE @D AS INT
DECLARE @E AS INT
DECLARE @F AS INT
DECLARE @G AS INT
DECLARE @H AS INT
DECLARE @I AS INT
DECLARE @K AS INT
DECLARE @L AS INT
DECLARE @M AS INT
SET @A = @ANO%19
SET @B = @ANO/100
SET @C = @ANO%100
SET @D = @B/4
SET @E = @B%4
SET @F = (@B+8)/25
SET @G = (@B-@F+1)/3
SET @H = (19*@A+@B-@D-@G+15)%30
SET @I = @C/4
SET @K = @C%4
SET @L = (32+2*@E+2*@I-@H-@K)%7
SET @M = (@A+11*@H+22*@L)/451
SET @MES = (@H+@L-7*@M+114)/31
SET @DIA = ((@H+@L-7*@M+114)%31)+1
SET @DATA = CAST((LTRIM(RTRIM(CAST(@ANO AS CHAR)))) + '-' +
(LTRIM(RTRIM(CAST(@MES AS CHAR)))) + '-' +
(LTRIM(RTRIM(CAST(@DIA AS CHAR)))) AS DATETIME)
RETURN(@DATA)
END;
GO
[editar] Exemplo de Cálculo
- Para calcular o dia da Páscoa (Domingo), usa-se a fórmula abaixo, onde o ANO deve ser introduzido com 4 dígitos. O Operador MOD é o resto da divisão. A fórmula vale para anos entre 1901 e 2099. A fórmula pode ser estendida para outros anos, alterando X e Y conforme a tabela a seguir:
- anos de 1582 à 1599 X=22 e Y=2
- anos de 1600 à 1699 X=22 e Y=2
- anos de 1700 à 1799 X=23 e Y=3
- anos de 1800 à 1899 X=24 e Y=4
- anos de 1900 à 1999 X=24 e Y=5
- anos de 2000 à 2099 X=24 e Y=5
- anos de 2100 à 2199 X=24 e Y=6
- anos de 2200 à 2299 X=25 e Y=7
- Para anos entre 1901 e 2099: X=24 e Y=5
- a = ANO MOD 19
- b= ANO MOD 4
- c = ANO MOD 7
- d = (19 * a + X) MOD 30
- e = (2 * b + 4 * c + 6 * d + Y) MOD 7
- Se (d + e) > 9 então DIA = (d + e - 9) e MES = Abril
- senão DIA = (d + e + 22) e MES = Março
- Há dois casos particulares que ocorrem duas vezes por século:
- Quando o domingo de Páscoa cair em Abril e o dia for 26, corrige-se para uma semana antes, ou seja, vai para dia 19;
- Quando o domingo de Páscoa cair em Abril e o dia for 25 e o termo "d" for igual a 28, simultaneamente com "a" maior que 10, então o dia é corrigido para 18.
- Neste século estes dois casos particulares só acontecerão em 2049 e 2076.
- Para calcular a Terça-feira de Carnaval, basta subtrair 47 dias do Domingo de Páscoa.
- Para calcular a Quinta-feira de Corpus Christi, soma-se 60 dias ao Domingo de Páscoa.
Exemplo de código em C# por Jefferson S. Motta
[editar] C#
public static string Calcula(int nAno)
{
int nRest =( nAno % 19)+1;
DateTime oDia=new DateTime();
switch (nRest)
{
case 1: oDia = new System.DateTime(nAno, 4, 14, 0,0,0,0); break;
case 2: oDia = new System.DateTime(nAno, 4, 3, 0, 0, 0, 0); break;
case 3: oDia = new System.DateTime(nAno, 3, 23, 0, 0, 0, 0); break;
case 4: oDia = new System.DateTime(nAno, 4, 11, 0, 0, 0, 0); break;
case 5: oDia = new System.DateTime(nAno, 3, 31, 0, 0, 0, 0); break;
case 6: oDia = new System.DateTime(nAno, 4, 18, 0, 0, 0, 0); break;
case 7: oDia = new System.DateTime(nAno, 4, 8, 0, 0, 0, 0); break;
case 8: oDia = new System.DateTime(nAno, 3, 28, 0, 0, 0, 0); break;
case 9: oDia = new System.DateTime(nAno, 4, 16, 0, 0, 0, 0); break;
case 10: oDia = new System.DateTime(nAno, 4, 5, 0, 0, 0, 0); break;
case 11: oDia = new System.DateTime(nAno, 3, 25, 0, 0, 0, 0); break;
case 12: oDia = new System.DateTime(nAno, 4, 13, 0, 0, 0, 0); break;
case 13: oDia = new System.DateTime(nAno, 4, 2, 0, 0, 0, 0); break;
case 14: oDia = new System.DateTime(nAno, 3, 22, 0, 0, 0, 0); break;
case 15: oDia = new System.DateTime(nAno, 4, 10, 0, 0, 0, 0); break;
case 16: oDia = new System.DateTime(nAno, 3, 30, 0, 0, 0, 0); break;
case 17: oDia = new System.DateTime(nAno, 4, 17, 0, 0, 0, 0); break;
case 18: oDia = new System.DateTime(nAno, 4, 7, 0, 0, 0, 0); break;
case 19: oDia = new System.DateTime(nAno, 3, 27, 0, 0, 0, 0); break;
}
string cRet = "";
for (int n = 1; n <= 13; n++)
{
oDia= oDia.AddDays(1);
if (oDia.DayOfWeek.ToString().Equals("Sunday"))
{
cRet = oDia.Day.ToString();
if (oDia.Month == 3)
{
cRet += " de março";
}
else
{
cRet += " de abril";
}
return cRet;
}
}
return "";
}
- exemplos:
- Para o ano de 1997:
- a=1997 MOD 19 = 2
- b=1997 MOD 4 = 1
- c=1997 MOD 7 = 2
- d=(19 * 2 + 24) MOD 30 = 2
- e=(2 * 1 + 4 * 2 + 6 * 2 + 5) MOD 7 = 6
- (d + e) = 2 + 6 = 8
- Logo o Domingo de Páscoa é 30/3/1997
- Carnaval: 11/2/1997
- Corpus Christi: 29/5/1997
[editar] Datas dos Feriados Móveis
A seguir, você verá uma tabela com todos os feriados móveis de um ano, sendo eles: Carnaval, Páscoa, Corpus Christi, etc., do período de 1970 a 2020.
| Ano | Data do Carnaval | Data da Sexta-feira Santa | Data da Páscoa | Data de Corpus Christi |
|---|---|---|---|---|
| 1970 | 10 de fevereiro | 27 de março | 29 de março | 28 de maio |
| 1971 | 23 de fevereiro | 9 de abril | 11 de abril | 10 de junho |
| 1972 | 15 de fevereiro | 31 de março | 2 de abril | 1 de junho |
| 1973 | 6 de março | 20 de abril | 22 de abril | 21 de junho |
| 1974 | 26 de fevereiro | 12 de abril | 14 de abril | 13 de junho |
| 1975 | 11 de fevereiro | 28 de março | 30 de março | 29 de maio |
| 1976 | 2 de março | 16 de abril | 18 de abril | 17 de junho |
| 1977 | 22 de fevereiro | 8 de abril | 10 de abril | 9 de junho |
| 1978 | 7 de fevereiro | 24 de março | 26 de março | 25 de maio |
| 1979 | 27 de fevereiro | 13 de abril | 15 de abril | 14 de junho |
| 1980 | 19 de fevereiro | 4 de abril | 6 de abril | 5 de junho |
| 1981 | 3 de março | 17 de abril | 19 de abril | 18 de junho |
| 1982 | 23 de fevereiro | 9 de abril | 11 de abril | 10 de junho |
| 1983 | 15 de fevereiro | 1 de abril | 3 de abril | 2 de junho |
| 1984 | 6 de março | 20 de abril | 22 de abril | 21 de junho |
| 1985 | 19 de fevereiro | 5 de abril | 7 de abril | 6 de junho |
| 1986 | 11 de fevereiro | 28 de março | 30 de março | 29 de maio |
| 1987 | 3 de março | 17 de abril | 19 de abril | 18 de junho |
| 1988 | 16 de fevereiro | 1 de abril | 3 de abril | 2 de junho |
| 1989 | 7 de fevereiro | 24 de março | 26 de março | 25 de maio |
| 1990 | 27 de fevereiro | 13 de abril | 15 de abril | 14 de junho |
| 1991 | 12 de fevereiro | 29 de março | 31 de março | 30 de maio |
| 1992 | 3 de março | 17 de abril | 19 de abril | 18 de junho |
| 1993 | 23 de fevereiro | 9 de abril | 11 de abril | 10 de junho |
| 1994 | 15 de fevereiro | 1 de abril | 3 de abril | 2 de junho |
| 1995 | 28 de fevereiro | 14 de abril | 16 de abril | 15 de junho |
| 1996 | 20 de fevereiro | 5 de abril | 7 de abril | 6 de junho |
| 1997 | 11 de fevereiro | 28 de março | 30 de março | 29 de maio |
| 1998 | 24 de fevereiro | 10 de abril | 12 de abril | 11 de junho |
| 1999 | 16 de fevereiro | 2 de abril | 4 de abril | 3 de junho |
| 2000 | 7 de março | 21 de abril | 23 de abril | 22 de junho |
| 2001 | 27 de fevereiro | 13 de abril | 15 de abril | 14 de junho |
| 2002 | 12 de fevereiro | 29 de março | 31 de março | 30 de maio |
| 2003 | 4 de março | 18 de abril | 20 de abril | 19 de junho |
| 2004 | 24 de fevereiro | 9 de abril | 11 de abril | 10 de junho |
| 2005 | 8 de fevereiro | 25 de março | 27 de março | 26 de maio |
| 2006 | 28 de fevereiro | 14 de abril | 16 de abril | 15 de junho |
| 2007 | 20 de fevereiro | 6 de abril | 8 de abril | 7 de junho |
| 2008 | 5 de fevereiro | 21 de março | 23 de março | 22 de maio |
| 2009 | 24 de fevereiro | 10 de abril | 12 de abril | 11 de junho |
| 2010 | 16 de fevereiro | 2 de abril | 4 de abril | 3 de junho |
| 2011 | 8 de março | 22 de abril | 24 de abril | 23 de junho |
| 2012 | 21 de fevereiro | 6 de abril | 8 de abril | 7 de junho |
| 2013 | 12 de fevereiro | 29 de março | 31 de março | 30 de maio |
| 2014 | 4 de março | 18 de abril | 20 de abril | 19 de junho |
| 2015 | 17 de fevereiro | 3 de abril | 5 de abril | 4 de junho |
| 2016 | 9 de fevereiro | 25 de março | 27 de março | 26 de maio |
| 2017 | 28 de fevereiro | 14 de abril | 16 de abril | 15 de junho |
| 2018 | 13 de fevereiro | 30 de março | 1 de abril | 31 de maio |
| 2019 | 5 de março | 19 de abril | 21 de abril | 20 de junho |
| 2020 | 25 de fevereiro | 10 de abril | 12 de abril | 11 de junho |