Calculating the Feast of the Resurrection (Easter)

The Council of Nicaea set the following rule for the calculation: Easter is the first Sunday after the first full moon on or after the Vernal Equinox.

The Vernal Equinox is the instant at which “the Sun is exactly above the Equator and day and night are of equal length” [Encyclopedia Britannica].

In the Northern Hemisphere, 21 March is nominally considered to be the date of the Vernal Equinox. However, the true astronomical Vernal Equinox can be substantially different. In fact, it can occur as early as 19 March.

The first full moon after the Vernal Equinox is also referred to as the Paschal Full Moon for the purposes of the Easter calculation. 

To obtain the precise astronomical dates and times for these two celestial events, we relied on the following:

  • The DE435 ephemeris from NASA JPL (itself a refinement of the DE430 ephemeris), which models the movement of the planets of the solar system. The DE435 dataset is the most recent one available as of January 2019.

  • Skyfield, an astronomical computation library for Python. Skyfield takes ephemeris files from NASA JPL and allows for highly accurate computation of planetary positions and other celestial events in the solar system. Skyfield’s API has built-in functions for calculating seasons on planet Earth (including the Vernal Equinox) and moon phases. Examples of both can be found in the Almanac section of the Skyfield website.


The algorithm for calculating Easter is as follows:

  1. Set a boundary between 17 March and 23 March in the Gregorian calendar

  2. Call Skyfield almanac() API to determine the date and time of the Vernal Equinox inside that boundary

  3. Set a boundary between the date/time of the Vernal Equinox and 29 days and 20 hours later

  4. Call Skyfield almanac() API to determine the date and time of the Paschal Full moon inside that boundary

  5. Convert the date and time of the Paschal Full Moon from the GMT time zone to the Jerusalem time zone

  6. Determine the date of the Sunday that follows the Paschal Full Moon, all in the Jerusalem time zone.

    • If the Paschal Full Moon is on a Sunday, then Easter is the following Sunday.

  7. Compute the other variable feasts and events that are tied to the date of the Feast of the Resurrection.