come si calcola la Pasqua

Come si calcola la Pasqua?

Ogni anno molti di noi hanno l’abitudine di programmare le feste, i ponti e i fine settimana in funzione dei giorni in cui capitano le principali festività.

Ci si preoccupa soprattutto di verificare se ad esempio il giorno di Natale e Santo Stefano capitino di giovedì e venerdì ad esempio, in modo da avere un ponte di tre quattro giorni per una mini vacanza in montagna.

Stessa cosa facciamo per il ponte del primo maggio o per il 25 aprile, che in alcuni casi riusciamo ad assemblare in un unico grande ponte.

L’unica festività che dobbiamo per forza andare a cercare sul calendario è il giorno di Pasqua.

Ricordiamo che il giorno di Pasqua per noi cristiani è il giorno dei giorni. il giorno più importante dell’anno perchè corrisponde al giorno in cui Gesù Cristo resuscitò lasciando il Santo Sepolcro e tornando alla Casa del Padre.

Questo rappresenta il fulcro di tutta la Cristianità.

Mentre però il giorno della nascita di Gesù Cristo, il Natale, si festeggia sempre il 25 dicembre, il giorno di Pasqua cambia ogni anno.

Perchè la Pasqua cambia ogni anno?

Il fatto che il giorno di Pasqua cambi ogni anno, è legato al fatto che Cristo resuscitò di Domenica, motivo per il quale è il giorno festivo per i cattolici e per il quale si va a Messa.

La Pasqua quindi deve capitare sempre di domenica.

Durante il Concilio di Nicea dell’anno 325 fu stabilito che il giorno di Pasqua deve cadere esattamente la prima domenica successiva alla prima luna piena dopo l’equinozio di primavera, che è il 21 marzo.

Poichè un ciclo lunare dura 29 giorni, la Pasqua capiterà sempre e solo dal 22 marzo al 25 aprile.

Funzione di calcolo del giorno di Pasqua

Anche noi programmatori abbiamo spesso l’esigenza nei nostri software di dover calcolare il giorno di Pasqua.

Pensiamo ad esempio ad un sistema di produzione dove stiamo implementando un calendario manifatturiero, e ci occorre sapere quali giorni festivi dover escludere.

Vediamo in che modo implementare una funzione che dato un anno solare calcolare il giorno di Pasqua secondo il calendario gregoriano.

Poichè secondo il calendario giuliano 19 anni solari corrispondono ad un numero intero di mesi solari.

Per calcolare il giorno di Pasqua secondo il calendario gregoriano si divide quindi l’anno per 19 e si applicano due costanti M ed N che dipendono dall’anno in cui ci troviamo.

Attraverso opportuni calcoli è possibile visualizzare l’algoritmo per il calcolo del giorno di Pasqua nella funzione seguente in VB.NET

Public Function CalcolaGiornoDiPasqua(ByVal anno As Short) As Date    

Dim a, b, c, d, e, M, N As Byte
    Dim da, mo As Byte


       If (anno >= 1583) And (anno <= 1699) Then
           M = 22
           N = 2
       ElseIf (anno >= 1700) And (anno <= 1799) Then
           M = 23
           N = 3
       ElseIf (anno >= 1800) And (anno <= 1899) Then
           M = 23
           N = 4
       ElseIf (anno >= 1900) And (anno <= 2099) Then
           M = 24
           N = 5
       ElseIf (anno >= 2100) And (anno <= 2199) Then
           M = 24
           N = 6
       ElseIf (anno >= 2200) And (Year <= 2299) Then
           M = 25
           N = 0
       ElseIf (anno >= 2300) And (anno <= 2399) Then
           M = 26
           N = 1
       ElseIf (anno >= 2400) And (anno <= 2499) Then
           M = 25
           N = 1
       End If


    a = anno Mod 19
    b = anno Mod 4
    c = anno Mod 7
    d = ((19 * a) + M) Mod 30
    e = ((2 * b) + (4 * c) + (6 * d) + N) Mod 7

    If (d + e < 10) Then
         da = d + e + 22
         mo = 3
    Else
         da = d + e - 9
         mo = 4
    End If

    If (da = 26 And mo = 4) Then
        da = 19
        mo = 4
    ElseIf (da = 25 And mo = 4 And d = 28 And e = 6 And a > 10) Then
        da = 18
        mo = 4
    End If

    Return New Date(anno , mo, da)

End Function

La stessa funzione per il calcolo giorno di Pasqua in C# sarà:

public DateTime CalcolaGiornoDiPasqua(short anno)
{
byte a, b, c, d, e, M, N;
byte da, mo;

if ((anno >= 1583) & (anno <= 1699))
{
    M = 22;
    N = 2;
}
else if ((anno >= 1700) & (anno <= 1799))
{
    M = 23;
    N = 3;
}
else if ((anno >= 1800) & (anno <= 1899))
{
    M = 23;
    N = 4;
}
else if ((anno >= 1900) & (anno <= 2099))
{
    M = 24;
    N = 5;
}
else if ((anno >= 2100) & (anno <= 2199))
{
    M = 24;
    N = 6;
}
else if ((anno >= 2200) & (Year <= 2299))
{
    M = 25;
    N = 0;
}
else if ((anno >= 2300) & (anno <= 2399))
{
    M = 26;
    N = 1;
}
else if ((anno >= 2400) & (anno <= 2499))
{
    M = 25;
    N = 1;
}


a = anno % 19;
b = anno % 4;
c = anno % 7;
d = ((19 * a) + M) % 30;
e = ((2 * b) + (4 * c) + (6 * d) + N) % 7;

if ((d + e < 10))
{
    da = d + e + 22;
    mo = 3;
}
else
{
    da = d + e - 9;
    mo = 4;
}

if ((da == 26 & mo == 4))
{
    da = 19;
    mo = 4;
}
else if ((da == 25 & mo == 4 & d == 28 & e == 6 & a > 10))
{
    da = 18;
    mo = 4;
}

return new DateTime(anno, mo, da);

}

Pasqua 2020

In base a tutti i calcoli che abbiamo fatto, quando sarà il giorno di Pasqua nell’anno 2020?

Semplice! Pasqua 2020 sarà il giorno domenica 12 aprile 2020.