# Easter function

The Pascha function below will calculate the date of Easter Sunday. The DemoEaster function simply calls Pascha() passing a range of years, it will work for years far into the future (millions of years.)

[Start Easter.vbs]

```DemoEaster 1550, 2100

Sub DemoEaster (Y1, Y2)
Dim Y, M, D
for Y = Y1 to Y2
Pascha Y, M, D
Wscript.echo St, Y & "-0" & M & "-" & LdgZ(D)
Next
End sub

Function LdgZ(ByVal N)
if (N>=0) and (N<10) then LdgZ = "0" & N else LdgZ = "" & N
End function

Sub Pascha(iYear, iMonth, iDay)
'Returns the Month and Day of Easter Sunday.
Dim C, G, K, I, J, L

G = iYear mod 19

if iYear > 1582 then
C = iYear \ 100
K = (C - 17) \ 25
I = C - (C \ 4) - ((C - K) \ 3) + 19 * G + 15
I = I mod 30
I = I - (I \ 28) * (1 - (I \ 28) * (29 \ (I + 1)) * ((21 - G) \ 11))
J = iYear + (iYear \ 4) + I + 2 - C + (C \ 4)
J = J mod 7
else
I = ((19 * G) + 15) mod 30
J = (iYear + (iYear \ 4) + I) mod 7
end if

L = I - J
iMonth = 3 + ((L + 40) \ 44)
iDay = L + 28 - 31 * (iMonth \ 4)

End sub```

[End Easter.vbs]

The Pascha function above gives a Julian date for Easter in years before 1583 otherwise it returns a standard Gregorian date.

Source: Newsgroups (May 2003) > Dr J.R. Stockton’s website. The Pascha function is based on the algorithm of Oudin (1940) a recognised algorithm for computing the date of Easter, it can be considered to be in the public domain.

This is the Western/Christian definition of Easter, many other methods exist for calculating Easter, "algorithm of Oudin" is a useful Google search to find other Easter algorithms and programming functions.

Example

cscript easter.vbs

“Gather ye rosebuds while ye may, Old Time is still a flying; And that same flower that blooms today, Tomorrow shall be dying” ~ Fredrick O' R. Hayes

Related:

DateTime - Get Date, Time and daylight savings