Come è noto, la festività della Pasqua Cattolica non cade mai nella stessa data in quanto è legata al ciclo lunare. Il “sistema” che fissa la data della Pasqua per ogni anno fu stabilita nell’anno 325 dal Concilio di Nicea: la Pasqua cade la domenica successiva al primo plenilunio dopo l’equinozio di Primavera (21 Marzo).
A volte capita di dover disporre di un semplice algoritmo da implementare nei propri programmi per il computo delle festività: è capitato a me per cui eccomi qui ad esporre una semplice funzione in vb.net che effettua il calcolo della data della Pasqua Cattolica.
Specifico “Cattolica” in quanto la Pasqua Ebraica segue un metodo di calcolo completamente differente e molto più complicato. La data della Pasqua Cattolica, inoltre, varia se si utilizza il calendario Gregoriano (che è quello che utilizziamo noi in Italia abitualmente e che viene utilizzato nella maggior parte del mondo) o il calendario Giuliano (utilizzato dalla Chiesa Ortodossa).
L’algoritmo più utilizzato per il calcolo della Pasqua Cattolica è sicuramente quello di Gauss. Nella funzione che segue ho implementato appunto tale algoritmo. Per utilizzare questa funzione nei vostri programmi copiate tutto il contenuto, incollatelo in un file di testo e date al file l’estensione .vb, importate quindi il tale file nel vostro progetto. La funzione va richiamata passando l’anno (parametro Year) e opzionalmente il valore dell’enumerazione per scegliere se utilizzare il calendario Gregoriano (opzione di default, per cui in questo caso non è necessario specificare) o quello Giuliano. Il valore restituito è in formato Date, per cui è indipendente dalle impostazioni internazionali in uso sul vostro pc.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | Module easter_calc
' Evaluates day of Catholic Easter using Gauss algorithm
' by Bernardo Giovanni
' http://www.settorezero.com
Public Enum CalendarType As Byte
Gregorian = 0
Julian = 1
End Enum
Public Function EasterDate(ByVal Year As Short, Optional ByVal CalendarType As CalendarType = CalendarType.Gregorian) As Date
Dim a, b, c, d, e, M, N As Byte
Dim da, mo As Byte
If CalendarType = easter_calc.CalendarType.Julian Then
M = 15
N = 6
Else
If (Year >= 1583) And (Year <= 1699) Then
M = 22
N = 2
ElseIf (Year >= 1700) And (Year <= 1799) Then
M = 23
N = 3
ElseIf (Year >= 1800) And (Year <= 1899) Then
M = 23
N = 4
ElseIf (Year >= 1900) And (Year <= 2099) Then
M = 24
N = 5
ElseIf (Year >= 2100) And (Year <= 2199) Then
M = 24
N = 6
ElseIf (Year >= 2200) And (Year <= 2299) Then
M = 25
N = 0
ElseIf (Year >= 2300) And (Year <= 2399) Then
M = 26
N = 1
ElseIf (Year >= 2400) And (Year <= 2499) Then
M = 25
N = 1
Else
Return Nothing
End If
End If
a = Year Mod 19
b = Year Mod 4
c = Year 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(Year, mo, da)
End Function
End Module |
Questa funzione, sfruttando l’algoritmo di Gauss, è valida per gli anni compresi tra il 1583 e il 2499, se l’anno passato non rientra in questo range, la funzione restituisce Nothing, che in termini di oggetto Date equivale alla data 01/01/0001 …
Scarica la funzione (solo per utenti iscritti) : Funzione in vb.net per il calcolo della Pasqua Cattolica (5)
Maggiori informazioni le potete trovare nelle seguenti pagine su wikipedia:
- Calcolo della Pasqua
- Calendario Giuliano
- Calendario Gregoriano
- Algoritmi per il Calcolo della Pasqua in altri linguaggi di programmazione
Articoli che potrebbero interessarti:



Commenti recenti