Easter: Calculating the Date

Easter is the Sunday after the full moon which falls on or after the spring equinox (in the northern hemisphere). The date of the equinox is taken as 21 March, and tables are used which follow the mean age of the moon, rather than the actual observed phases.

The tables which appear here and, in more detail, in the Book of Common Prayer can be used to determine the date of Easter. These tables were compiled by the then Astronomer Royal, the Revd James Bradley (1673–1762) for the Calendar Act 1750 (by which the Gregorian Calendar was adopted in Britain), and the effect of them is mathematically identical to the more complicated tables devised in 1582 for Pope Gregory XIII’s reform.

Underlying these tables is a relatively simple algorithm which is described here. This description assumes a limited mathematical knowledge, particularly of integer division and remainders, or modulo arithmetic. The algorithm applies to any year since the introduction of the Gregorian Calendar, which in Britain was in September 1752.

We refer to the year number as y, and use it to calculate the Golden number, g:

g = y mod 19 + 1
Next we calculate the date of the Paschal full moon, that is, the full moon which Easter is the Sunday after. This is done in several stages. First we calculate two values called the solar correction, s, and the lunar correction, l.
s = (y - 1600) div 100 - (y - 1600) div 400
l = (((y - 1400) div 100) × 8) div 25
Next we calculate an uncorrected date for the Paschal full moon, p'; then we apply a minor correction to get the exact date, p, as the number of days after 21 March.
p' = (3 - 11g + s - l) mod 30
if (p' == 29) or (p' == 28 and g > 11) then
   p = p' - 1
   p = p'
Now we need to determine the date of the following Sunday. First we calculate the ‘Dominical number’, d:
d = (y + (y div 4) - (y div 100) + (y div 400)) mod 7
Note that this is the number from which the Dominical letter is determined, and we calculate d', which is the date on which the first Sunday of the year falls:
d' = (8 - d) mod 7
We already have p, the date of the Paschal full moon in days after 21 March. Next we determine p'' the first date in the year which falls on the same day of the week as the Paschal full moon. First we determine the ‘day number’ of p with respect to 1st January. This is 31 + 28 + 21 + p = 80 + p. (Note that we can disregard possible occurences of 29 February, because the calculation of d has already taken this into account, and we shall see that these two values will cancel each other out.) p'' is then given by the formula:
p'' = (80 + p) mod 7
= (3 + p) mod 7
The difference between d' (the first Sunday in the year) and p'' (the day of the week when the Paschal full moon falls) gives us the number of days that must be added to p to get the date of the following Sunday, which is Easter Day. There is one further subtlety. This number must lie in the range 1-7, rather than 0-6, since Easter is not allowed to fall on the same day as the Paschal full moon. We first determine x', the difference between d' and p'':
x' = d' - p''
= (8 - d) mod 7 - (3 + p) mod 7
= (8 - d - (3 + p)) mod 7
= (5 - d - p)) mod 7
To force this to lie in the range 1-7, we calculate x
x = (x' - 1) mod 7 + 1
= (4 - d - p)) mod 7 + 1

We can now calculate e, the number of days Easter falls after 21 March:

e = p + x
e = p + 1 + (4 - d - p) mod 7
In other words Easter Day is:
if e < 11 then
   (e + 21) March
   (e - 10) April

Simon Kershaw <simon@oremus.org>
10 August 2004