Elusive Easter
Home | Articles | Date and Time | Elusive Easter Log in | Sign up
Image by starline on Freepik
Western churches celebrate Easter this coming Sunday. So, I thought this would be a good time to discuss Easter and how the churches agreed on when it should be celebrated.
Easter is one of the trickiest holidays when it comes to planning events, and it can catch out even the most wary. Originally, Easter was associated by the early Church with the Jewish Passover, but the exact date has been controversial for centuries.
In 325 AD, a method of determining the date was agreed upon at the Council of Nicaea. This definition, which is still used today, is (wait for it):
“The first Sunday after the first full moon after or on the vernal equinox; and that if the full moon should occur on a Sunday and thereby coincide with the Passover festival, Easter should be commemorated on the Sunday following.”
Let’s look at the reasoning behind this statement. According to the New Testament, the feast of the Passover (The Last Supper) fell on a Thursday, and Christ was crucified the following day (Good Friday) and rose again on the third day (Easter Sunday).
This would have been reasonably straightforward if it wasn’t for the fact that the feast of the Passover occurs on the day of the first full moon after the spring equinox. This means that Passover falls on different days from year to year. Christians of Jewish origin were quite comfortable with this, but those of Gentile origin wanted to celebrate the Resurrection on — well — Easter Sunday.
All this led to the curious situation of different parts of the Church celebrating the Resurrection on different days. Those in the East observed Easter according to the date of the Passover festival, and those in the West celebrated Easter on a Sunday. This, in turn, led to the Council of Nicaea ruling and the definition given above. Although the spring equinox can fall between March 19 and 21 in the northern hemisphere, the official Church spring equinox is always March 21. I should also mention at this stage that, although no one has ever seen one, an “ecclesiastical moon” whose motion differs slightly from the real one is used for the calculations.
All this means Easter can fall on any Sunday between 22 March and 25 April, and, as you can imagine, this made plenty of work for
astronomers.
Because the Earth goes round the Sun in 365.2422 days, the lunar month is 29.53 days, and the Julian calendar in use at that time was drifting out of synchronisation with the real year, calculating the date for Easter was a bit of an astronomical nightmare in the fourth century.
Adopting the Gregorian calendar in 1582 eliminated much of the difficulty in fixing the date of Easter. In 1752, the Gregorian calendar was also adopted in Great Britain and Ireland, and since that time, Easter has been celebrated on the same day in the Western part of the Christian world. The Eastern churches did not adopt the Gregorian calendar; most years, they commemorate Easter Sunday on a different date to the West. Occasionally, the dates coincide — the most recent times being 2007, 2010, 2011, 2014 and 2017. The next coincidence is 2025, when Easter Sunday will occur on the Gregorian calendar, April 20 2025, the same day as the Julian (Eastern) calendar.
Like most problems, working out the date for Easter for a particular year benefits from breaking the problem down into smaller problems. In this case, the two constituent problems are:
- the dates of the Sundays between 22 March and 25 April, and
- the dates of the Full Moon between 22 March and 25 April.
The “day of the week” (and hence the dates of the Sundays) can be worked out by referring to the tables in my Days of the Week article.
Working out the phases of the Moon (and hence the dates of the full Moon) is much more difficult, and an introduction to the subject is given in my article on The Moon and its Phases. In 2025, the first Full Moon after 21 March falls on Sunday, 13 April, so Easter Sunday will fall a week later on 20 April.
If you would like to calculate the date for Easter Sunday yourself, you could try the following method:
Divide | By | Quotient | Remainder |
---|---|---|---|
The year x | 19 | - | a |
The year x | 100 | b | c |
b | 4 | d | e |
b + 8 | 25 | f | - |
b - f + 1 | 3 | g | - |
19a + b - d - g + 15 | 30 | - | h |
c | 4 | i | k |
32 + 2e + 2i - h - k | 7 | - | l |
a + 11h + 22l | 451 | m | - |
h + l - 7m + 114 | 31 | n | o |
Then n is the month of the year, and o + 1 is the day of the month on which Easter Sunday falls. For example, to find the date of Easter Sunday 2025:
Divide | By | Quotient | Remainder |
---|---|---|---|
2025(x) | 19 | - | 11(a) |
2025 | 100 | 20(b) | 25(c) |
(b=20) | 4 | 5(d) | 0(e) |
(b=20) + 8 | 25 | 1(f) | - |
(b=20) - (f=1) + 1 | 3 | 6(g) | - |
19(a=11) + (b=20) - (d=5) - (g=6) + 15 | 30 | - | 23(h) |
(c=25) | 4 | 6(i) | 1(k) |
32 + 2(e=0) + 2(i=6) - (h=23) - (k=1) | 7 | - | 6(l) |
(a=11) + 11(h=23) + 22(l=6) | 451 | 0(m) | - |
(h=23) + (l=6) - 7(m=2) + 114 | 31 | 4(n) | 19(o) |
Therefore, Easter Sunday 2025 will fall on the 20th (o + 1) day of April (n).
For more information about quotients and remainders, see my article on Quotients and Remainders.
If you would prefer not to do all these sums, I have written a Python script, which you can find right at the bottom of this article.
No wonder moves are being made to have Easter on a fixed date. In fact, in 1928, a Bill was passed by the British Parliament which would allow the Church of England to ‘fix’ Easter to be the Sunday after the second Saturday in April. This would have the effect of restricting Easter between 9 April and 15 April. However, this Bill can only take effect after the World Council of Churches has agreed it. Assuming that this agreement may still be some time in coming, the table below gives the expected dates for Easter Sunday up to 2040.
Easter Sunday 2024–2040
Year | Date |
---|---|
2024 | 31 Mar |
2025 | 20 Apr |
2026 | 05 Apr |
2027 | 28 Apr |
2028 | 16 Apr |
2029 | 01 Apr |
2030 | 21 Apr |
2031 | 13 Apr |
2032 | 28 Apr |
2033 | 17 Apr |
2034 | 09 Apr |
2035 | 25 Apr |
2036 | 13 Apr |
2037 | 05 Apr |
2038 | 25 Apr |
2039 | 10 Apr |
2040 | 01 Apr |
Python script for calculating the date of Easter Sunday
import math
run = 1
months = ["March", "April"]
def quotient(dividend,divisor):
quotient = math.trunc(dividend/divisor)
return quotient
def remainder(dividend,divisor,quotient):
remainder = dividend - (quotient * divisor)
return remainder
print("\n>>>>>>>> Easter Sunday <<<<<<<<\n")
while(run == 1):
strX = input("Enter year: ")
x = int(strX)
q = quotient(x,19)
a = remainder(x,19,q)
b = quotient(x,100)
c = remainder(x,100,b)
d = quotient(b,4)
e = remainder(b,4,5)
f = quotient(b+8,25)
g = quotient(b-f+1,3)
r = (19a)+b-d-g+15
q = quotient(r,30)
h = remainder(r,30,q)
i = quotient(c,4)
k = remainder(c,4,i)
s = 32 + (2*e) + (2i) - h - k
q = quotient(s,7)
l = remainder(s,7,q)
t = a + (11*h) + (22l)
m = quotient(t,451)
u = h + l - (7*m) + 114
n = quotient(u,31)
o = remainder(u,31,n)
print()
day = str(o + 1)
month = months[n-3]
year = str(x)
print("Easter Sunday is on " + day + " " + month + " " + year)
print()
run = int(input("1. Continuen2. Exit nn"))
print()
if run == 2:
exit()
import math
run = 1
months = ["March", "April"]
def quotient(dividend,divisor):
quotient = math.trunc(dividend/divisor)
return quotient
def remainder(dividend,divisor,quotient):
remainder = dividend - (quotient * divisor)
return remainder
print("\n>>>>>>>> Easter Sunday <<<<<<<<\n")
while(run == 1):
strX = input("Enter year: ")
x = int(strX)
q = quotient(x,19)
a = remainder(x,19,q)
b = quotient(x,100)
c = remainder(x,100,b)
d = quotient(b,4)
e = remainder(b,4,5)
f = quotient(b+8,25)
g = quotient(b-f+1,3)
r = (19a)+b-d-g+15
q = quotient(r,30)
h = remainder(r,30,q)
i = quotient(c,4)
k = remainder(c,4,i)
s = 32 + (2*e) + (2i) - h - k
q = quotient(s,7)
l = remainder(s,7,q)
t = a + (11*h) + (22l)
m = quotient(t,451)
u = h + l - (7*m) + 114
n = quotient(u,31)
o = remainder(u,31,n)
print()
day = str(o + 1)
month = months[n-3]
year = str(x)
print("Easter Sunday is on " + day + " " + month + " " + year)
print()
run = int(input("1. Continuen2. Exit nn"))
print()
if run == 2:
exit()