logo To Foot
© J R Stockton, ≥ 2013-01-27

The Date of Easter Sunday.

No-Frame * Framed Index * Frame This
Links within this site :-
Here, unless otherwise indicated, Easter is Gregorian and the Book of Common Prayer is a modern edition.
Gregorian Easter is here taken as compatible with the Calendar Act of 1751 as passed.
Apparently, Clavius described both that and at least one differing scheme.
The identifiers goodGregEstrSun and goodJulnEstrSun have been assigned on this site as aliases for whichever Gregorian and Julian Easter routines have currently been selected as suitable. Those routines will have been tested against known-good routines over at least 5,700,000 or 532 years respectively.
Calculations of the Date of Easter Sunday generally determine it first as a Date of March, range 22 to 56, with 32 meaning April 1st and 56 meaning April 25th.

Easter Sunday Dates

Easter Day represents the Sunday following the first Full Moon of Spring.
Easter Sunday (both Julian and Gregorian), is the first Sunday after the estimated date of an Full Moon which occurs on or after March 21st.
The possible Easter dates are thus March 22nd to April 25th.
Formally : see in ... after the Book of Common Prayer of the Church of England.

Computed date results on this site, when not from JavaScript here, are generally from programs longcalc or mjd_date, each via programs index.

Dates of Easter

My Web page JavaScript Calendars and Clocks can show Easter Sunday for any year in AD 1..9999.

JavaScript derived in my page section The Calculation of Easter Sunday after the Book of Common Prayer of the Church of England and shown on this page will give Easter Sunday (as Day-of-March, easily converted to an ordinary date) for any year within ±5e15 or more; function jrsEaster is faster, for years 0 to 4294967295.

JavaScript derived in my page Easter Algorithms from the Six Canons of Christopher Clavius, etc. will give Easter Sunday for any year from AD 0 to 232-1 or more.

Those pages also derive algorithms for Julian Easter on the Julian Calendar.

My program longcalc can give Gregorian Easter for any year within a very much wider range.

Since the Gregorian Easter pattern repeats every 5,700,000 years, any method valid for years 0 to 5,699,999 can be extended indefinitely onwards by using Year modulo 5,700,000 (Julian : modulo 532; combined, modulo 39,900,000).

For a Given Year
 

Orthodox : here 1900-2099 only
List of Examples
Compressed Tables
Computed Gregorian or Julian Easter Sundays, on the corresponding Calendar
Years   -   G J     on a new page/tab

My page estr-tbl.txt now tabulates Gregorian Easter Sundays for 1900-2199.

Harvey

"The Oxford Companion to English Literature", by Sir Paul Harvey (1869-1948), 4th Edn., OUP 1967, ISBN 0-19-886106-1, Appendix III, "The Calendar", has information on the British Calendar covering the Second Millennium AD. It does not give the Easter Rules, but it does give the dates of Julian Easter for 1066 to 1752, and of Gregorian Easter for 1583 to 2000; also Dominical Letters and Regnal Years; etc.

What is a Date?

The Date of Easter Sunday for a given Year is defined worldwide, using the ordinary Month and Day (yyyy-mm-dd). For calculation, it is easier to consider March as extending over April, and so to first determine a Day-of-March, which will be in the range 22 (March 22nd) to 56 (April 25th).

Date can also be expressed using ISO 8601 Week Numbering (yyyy-Www-d), with weekdays Mon=1 to Sun=7 and Week 1 containing January 4th. See in Week Numbers for Easter Sunday.

Date can also be expressed as Ordinal Date (yyyy-ddd), counting the days of the year from 1 to 365 or 366. March 22nd can be Day 81 or 82; April 25th can be Day 115 or 116. See in Ordinal Dates for Easter Sunday.

The Easter Date Rules

These pages largely rely on the authority of the Calendar Act as represented in the Book of Common Prayer of the Church of England; the earlier Roman Catholic authority is differently expressed but gives the same results.

The date of Easter Sunday by the present Rules is fully predictable, but exactly how is not generally known. The method is given in the Calendar Act of 1751 and in the Book of Common Prayer, and is not as difficult as may at first sight appear.

Historical discussion of the determination of the Date of Easter Sunday was traditionally termed Computus. But I'm not convinced that it is an entirely appropriate term for the discussion of the consequences of the Papal Bull, of the Compendium, the Six Canons and the Explicatio, or of the Calendar Act.

The Julian Calendar and Julian Easter Rules are perpetually valid, from when they were finalised. The Gregorian Rules are perpetually valid, from the Bull of 1582. The Civil Calendar and Easter were Julian, are Gregorian, and if changed will no longer be Gregorian.

The perpetual Gregorian rules are expressed in the Six Canons, and in the Act and Book, in manners which are not themselves perpetual, but which can easily be extended with well-established information (Bull and Act) about the secular calendar and with an understanding of the period of the Lunar Correction (Explicatio).

A Brief History

Easter Sunday celebrates the Resurrection, which followed the Crucifixion, which took place on a Friday at the Jewish Passover (Pesach), which began on a fixed date (15 Nisan) on the luni-solar Hebrew Calendar, and occurred at the first (nominal) Full Moon of each (northern) Spring. See also Hebrew and Gregorian Moons.

Rules for the date of Easter Sunday have always been intended to give a date approximating to that Jewish date. One might say that Easter Sunday is currently always the Sunday after a day near to the 15th day of a Lunar month which, in the view of the Churches, ought to be that of Nisan.

From the Second Century AD or earlier, Easter was celebrated on various similar dates, differing in different places. In AD 314, the first Council of Arles decided that the same date should be used everywhere.

In AD 325, a general rule for the date of Easter, on the then-current Julian calendar, was decided by the First Council of Nicæa (or Nicaea; now Iznik in Bithynia, north-western Turkey). It dropped the previous dependence on the Jewish Calendar, and used an approximation to the true Moon and Equinox.

Around AD 530, Dionysius Exiguus introduced Anno Domini and clarified the tabulation of Easter Day. In AD 664, the Synod of Whitby decided that the whole English Church should follow the Roman interpretation rather than the slightly different one used by the Celts.

I don't know the history of non-English Easter dates in Britain.

In 1582, Pope Gregory XIII introduced the present calendar system, as recommended by a commission following a proposal by Aloysius Lilius. Primarily, it adjusts the average number of days in the year in order to keep the seasons, especially the Vernal Equinox, in place. The determination of the date of Easter implements the same underlying principles as before, but uses both the new annual Calendar and a better knowledge of the Moon's behaviour. The range of Easter dates was not changed.

Although the methods are analogous, the date of Gregorian Easter cannot be determined from the date of Julian Easter. Only the Golden Number and Sunday Letter are fully common.

Different countries adopted the new Easter date rules at different times, Britain and the Colonies in 1752; some Churches have not yet done so. Sweden and Finland jointly had complex transitions for both secular and religious dates.

Refer to E.G.Richards' book "Mapping Time" chapter 28; Claus Tøndering's Calendar FAQ; an old newsgroup thread on Easter algorithms; and note proposals to change the Easter rules (see Possible Revisions to the Easter Rules below).

It is said that there was an intention that Easter Sunday should never be on or before (the first full day of ??) the Jewish Passover. Maybe so; but with the present Hebrew and Gregorian years being of different average length, that cannot possibly be satisfied in perpetuity.

I do not recall seeing any formal definition of Good Friday or Easter Monday, but, given the date of Easter Sunday, there can be no doubt about their dates.

Authorities for the Date of Gregorian Easter

The Papal Bull of 1582 and the British Calendar Act of 1751 each decree the use, from a stated date, of the Gregorian Calendar, with its new Leap Year and Easter Day rules. The Act and the Bull each define the same civil Calendar, in perpetuity.

I know of no international standards defining the date of Easter Sunday (ISO 8601 defines the secular calendar).

The Bull and the Act do not themselves contain the full Easter Rules, each citing other documents, which give equivalent Easter Rules. If the civil calendar or the Easter Rules are ever changed, the result will not be Gregorian.

For external links, see my Date Links page.

Subsequent amendments may have inadvertently damaged the current legislative situation.

The Papal Bull

The original authority for the current Easter rules is, as for the current Leap Year rules, given by Pope Gregory XIII's Papal Bull Inter Gravissimas of 1582. The full documents describing the Easter Rules were not published at the time; but the essentials for the calculation of the date were published that year in the Canons.

The full information is in Romani calendarij à Gregorio XIII. P. M. restituti explicatio (1603) by Christopher Clavius, included in the fifth volume of Opera Mathematica (1611/12).

The British Calendar Act

The original British authority is, likewise, given by the Calendar (New Style) Act (1750 c.23). The Act defines and requires the use of the Gregorian secular Calendar, and in that respect remains fully in force. It also gives authority to the Annexe of Church Calendar material. For the Calendar Acts in general, see also in my Leap Years.

The annexed text and Tables include the Easter material. Some of it has been updated by subsequent legislation, without intent to change the underlying Rules.

The Act said that the annexed material was to be prefixed to the Book of Common Prayer of the Church of England in lieu of the old (Julian) material (prefixed 1662-1751), so the version in the Prayer Book is somewhat authoritative. The Julian Table was intrinsically valid for ever, but the Gregorian ones require additional interpretation for years before 1600 and past 8599.

For the Act as passed, see An act for regulating the commencement of the year; and for correcting the calendar now in use, Statutes at Large 1765, with Easter tables, at Google Books.

For an authoritative Web version of the Act as amended to the present date, see the UK Legislation site (seek years 1750 & 1751). The material includes images (large files) of annexed "Prayer Book" material cited in Section 3 of the first Act, presently placed at the end of Section 6 (BUT SEE Pages Annexed to the Act).

The Dating of the Calendar Acts

There seems to be confusion as to the proper year of each of the two related Acts.

The UK Statute Law Database lists :-
  • Calendar (New Style) Act 1750   1750 c.23   24_Geo_2
  • Calendar Act 1751               1751 c.30   25_Geo_2

The first Act contains all the Calendar changes; the residue of the second, amending, Act concerns only administrative details.

The Acts are dated in Regnal Years as 24 Geo. 2 and 25 Geo. 2 - those years were (Julian) 11 Jun 1750 to 10 Jun 1751 and 11 Jun 1751 to 10 Jun 1752.

According to E.G.Richards' book "Mapping Time", the first Act was presented on 25 Feb 1751, passed its second reading on 18 March, and received the Royal Assent on 22 May. From the Regnal Year, those must all have been in the first half of 1751, New Style. Internal evidence confirms that it must have been enacted before 1752 N.S.

One can find elsewhere on the Web copies of "A.D. 1751. Anno vicesimo quarto GEORGII II. CAP. XXIII.   An Act for Regulating the Commencement of the Year; and for Correcting the Calendar now in Use. [`Amended by 25 Geo. 2. c.30.']".

Remember that, before the Act came into force, the new year number started on March 25th.

Foreign Law for Easter Sunday

The Date of Easter Sunday outside the UK and most [ex-]colonies, etc., is undoubtedly as given above, except where Julian Easter is celebrated by the rules of the Orthodox Church, and maybe for a few dissenters. But I know of no other civil law for the date.

UN, ISO

I know of nothing applicable there.

EU

I am told that there is no formal EU definition, which seems a pity. The State of the Vatican City and the Holy See are not members of the EU.

USA

The First Amendment may have made the inherited Calendar Act sacrosanct.

Easter Date Calculation

In The Calculation of Easter Sunday ..., I have developed routines to calculate and show imitations of the Prayer Book Tables. From those routines are derived compact, efficient, and traceable algorithms for the date of Gregorian Easter Sunday, and a similar Julian algorithm.

Algorithms for the date of Easter Sunday have been presented by various trustworthy authors. All of those which I have tested have agreed with each other and with mine, and with specific Easter dates obtained from other sources such as Harvey. I have used those algorithms and mine to support some of the "consequences" material below.

As well as the JavaScript in these pages, I have older Pascal/Delphi routines in dateprox.pas via the programs index. Where "consequences", etc., are presented below without code, that and mjd_date.pas may well have been used.

Principles of Determination of Easter Sunday

There are a number of accounts of the underlying principles and rules for the date of Easter Sunday, in books and on Web sites.

Many literary, and some Web, sources have been cited in Internet Sources, a part of A Perpetual Easter and Passover Calculator, by R.H. van Gent.

The Nature of the Date of Easter

Easter is an Anniversary. It is like a birthday, which commemorates after the passage of each full cycle of the seasons using an interval of 365 or 366 days matching a solar calendar. The day of the Crucifixion was closely associated both with the Jewish luni-solar calendar and with the day of the week, but the commemoration date needed to be calculated on the current civil (Julian, then Gregorian) calendar. The Easter Tables and Rules have been chosen to be such that the commemoration would occur on a day appropriately representative of the Jewish date of the original event.

As for birthdays, the choice of the exact Rules was governed by astronomical data; but in each case it is the Rules themselves which are definitive, not the astronomy. Like the rules of the secular calendar, the Julian and Gregorian Easter Rules are immutable and perpetual. They are applicable for all time both forwards and, because their results are cyclic, they can be extrapolated backwards (proleptically) as well. Those Rules cannot be changed; they can only be superseded.

The Actual Rule for a given year has varied. It could not possibly have existed until after the Resurrection; it did exist in various forms from perhaps a few decades after that; in principle it took the Julian form in AD 325, and changed to the Gregorian form in 1582...1752... . It may change in future, and will need to change if the civil calendar is changed. It will need a new name.

The Easter Rules

The Lunar Month

The Vernal Equinox is in March world-wide, although Vernal refers to Spring.

The true Equinox and the true Full Moon each occur at observationally-defined UTC instants. The local date of the true Equinox, and that of each true Full Moon, thus depend on location.

Easter Day is the same date world-wide.


The Prayer Book states clearly that the base date is March 21st, and that the PFM is on or after that date, and Easter Sunday is after the PFM. Using "After March 20th" is equivalent, but wrong.

Easter Sunday, Julian or Gregorian, is the first Sunday after the day of the Paschal Full Moon (PFM), which is the Ecclesiastical Full Moon (EFM) on or after the nominal date of the Vernal Equinox. Tables were calculated to represent what should nowadays be expressed as an algorithm.

No allowance is made for time zones or Summer Time.

The Vernal Equinox is taken as being March 21st, rather than the day of the astronomical Equinox.

The Ecclesiastical Full Moon is a theoretical Full Moon approximating the actual Full Moon. The Golden Number (traditionally written as I to XIX) expresses the Metonic Cycle of 19 years (235 lunar months), after which Full Moon dates repeat (approximately).

The Paschal Full Moon necessarily occurs in Holy Week.

The Calendar Week

The Leap Year pattern repeats every 400 years, which is a multiple of 7 days. The Sunday Letter pattern therefore repeats every 400 years, during which each Letter occurs 56, 57, or 58 times.

The days of the Calendar Year, omitting February 29th, are given a repeating sequence of letters A to G (thus January 1st and December 31st are both A). The Sunday Letter is the letter of the Sundays of the year. Leap Years have two letters, the second being used for Easter. The Sunday Letter is customarily used to move from the PFM to the following Sunday, Easter Day.

Current Golden Numbers and Sunday Letters

This computes and shows the Golden Number count and the Sunday Letter, with instances where "the Sunday Letter leapeth" (the second Letter being used for Easter).

The Tabular Methods

Julian Easter Sunday is defined by a simple Table, indexed by the Golden Number and by the Sunday Letter.

The Gregorian Rule adds long-term corrections, requiring more complex Tables. The corrections change only in years divisible by 100, and it is convenient to introduce the term centade for the years '00-'99.

The Epact is not defined in Act or Book, but one of their Tables includes values for it. It appears to represent the phase of the Ecclesiastical Moon on March 22nd.

The Full Moons

This indicates how the Ecclesiastical and Actual dates for the Gregorian Full Moon differ.

YearActual UTEccles.~ YearActual UTEccles.~
2001Apr 08 03:22Apr 08= 2002Mar 28 18:25Mar 28=
2003Apr 16 19:36Apr 16= 2004Apr 05 11:03Apr 05=
2005Mar 25 20:58Mar 25= 2006Apr 13 16:40Apr 13=
2007Apr 02 17:15Apr 02= 2008Mar 21 18:40Mar 22<
2009Apr 09 14:56Apr 10< 2010Mar 30 02:25Mar 30=
2011Apr 18 02:44Apr 17> 2012Apr 06 19:19Apr 07<
2013Mar 27 09:27Mar 27= 2014Apr 15 07:42Apr 14>
2015Apr 04 12:06Apr 03> 2016Mar 23 12:01Mar 23=
2017Apr 11 06:08Apr 11= 2018Mar 31 12:37Mar 31=
2019Apr 19 11:12Apr 18> 2020Apr 08 02:35Apr 08=
2021Mar 28 18:48Mar 28= 2022Apr 16 18:55Apr 16=

Actual Full Moons are from NASA, and Ecclesiastical Full Moons are calculated as PFM in The Calculation of Easter Sunday.

Non-Gregorian Easters

Julian Easter

For the origins of Julian (Dionysian) Easter, see above. For a fairly reliable authority for the Rule, see Prayer Books fron 1662 to 1750 (Golden Number and Sunday Letter are assumed known by the Easter section).

The Julian Easter Date pattern repeats every 19×28=532 years

My Zeller pages can calculate the date of Julian Easter on the Julian Calendar. See also in my The Calculation of Easter Sunday.

Since the range of Julian Easter Sunday was March 22nd to April 25th, and before 1752 the British year began on March 25th, it was possible for Easter Sunday to occur in the same year as the previous Christmas Day; I think this last occurred in 1706. Also, to have either 0 or 2 Easter Sundays in a year.

Orthodox Easter

The Orthodox now use the Gregorian Calendar, but celebrate Easter on the day given by the Julian Calendar and Easter Rules. I have read : "The Orthodox Easter usually falls later than the Catholic Easter, depending on when Passover is. The Russian Easter falls one week after Passover."; and I have seen :-

Year      2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010

Catholic  23/4 15/4 31/3 20/4 11/4 27/3 16/4  8/4 23/3 12/4  4/4
Orthodox  30/4 15/4  5/5 27/4 11/4  1/5 23/4  8/4 27/4 19/4  4/4

Both rows use Gregorian calendar dates. Confirmed by The Calculation of Easter Sunday.

To the Julian date of Julian Easter, add the calendar difference given in Date and Time Scales, or use Julian/Gregorian Calendar Date Conversion. But note Greek Orthodox in Leap Similar to Gregorian.

Unless their Rules are changed, the Orthodox will, eventually, have their Easters in Gregorian Summer, ..., Christmastide, ..., next year, ... . They could use the Julian Ecclesiastical Full Moon on or after Gregorian March 21, and then move ahead to the nearest Sunday.

See Paschalion, which generally confirms the above and includes Oudin's Julian Easter algorithm.

Multiple Easter Dates Calculator

  YYYY  
  Gregorian Easter
  Julian Easter
  Julian Easter on Gregorian Calendar

Possible Revisions to the Easter Rules

Although the Gregorian Calendar is by definition perpetual, the Civil Calendar can be changed.

Isaac Newton

See History of One Defeat: Reform of the Julian Calendar as Envisioned by Isaac Newton, on unpublished MS material from about 1699. Newton proposed new (non-Gregorian) Leap Year rules, and wrote : "And from thence forward the festival of Easter shall be kept on the Lord's day next after the 14th of that lunar month which shall begin next after the seventh day of March.".

A Fixed Easter Sunday

The Easter Act 1928 [18 & 19 Geo. 5, chapter 35] (also at UK Easter Act), following a League of Nations proposal of 1926, allows Easter to be fixed by Order in Council as the Sunday after the second Saturday in April (April 9th-15th). There has been no such Order.

Program mjd_date can calculate both the current Easter rule and the N'th X-day of Month in Year (just add one day to the 2nd Saturday in April).

Fixing the ISO 8601 Week Date

Many countries have holidays around Easter-time, affecting their own level of business and that of their trading partners. The 1928 proposal would limit the range of ISO week numbers for Easter, which is always Day Number 7, to two. One can go further and completely fix the week-numbering date. That would make business statistics better comparable year-to-year. Easter would then have a range of seven common dates in common years, with the range being a day earlier in Leap Years. This would also reduce the range of Ordinal Dates from 36 dates to 7 dates.

The present Easter Sunday is most commonly in Week 15. The best fixed week-numbering date would be yyyy-W15-7, which gives a range of Easter Sunday dates close to those for the 1928 Act. The range would be April 12th-18th for common years and April 11th-17th for Leap Years. Easter would be the Sunday after the second Wednesday in common years, and after the second Thursday in Leap Years.

It would be as if the Paschal Full Moon date were always the 101st day of the year, April 11th or 10th respectively.

Aleppo, 1997

A Church Council at Aleppo (Syria) in March 1997 recommended changing to a common date for Easter Sunday; it would then be on the Sunday, at Jerusalem, following the first actual full moon after the vernal equinox.

Two consequences would be that the date would no longer be predictable in distant perpetuity, and that in some nearer years the Equinox and the Full Moon might be so close in time as to make their order difficult to foresee or determine.

The first divergence from Gregorian would be in 2019 - 24 March instead of 21 April; and in 2877, Easter Sunday would for the first time be on 21 March, a date not possible by the Julian and Gregorian Rules.

Implementation, proposed for 2001, did not occur.

2008

New attempt to achieve a common date for Easter

Possible Civil Calendar Changes

Civil Calendar Adjustment
Leap Year Adjustment

The Solar Year is not exactly 365.2425 days long, and is changing in length. By about the year 4000 the error is expected to have reached one day. The Leap Year rules might eventually be modified or supplemented.

Easter Adjustment

If the Civil Calendar is adjusted, the Solar Correction will be affected; also probably the Sunday Letter. Consequent changes for Easter will be implied.

The existing rule will not fully agree with the Real Moon long-term, so the Lunar Correction will also need attention; I don't know the time-scale for that to be significant.

Civil Calendar Redesign

There are various proposals for major revision of the Civil Calendar, generally aimed at making the yearly and/or monthly calendars less variable. In those that maintain unchanged the cycle of weeks, it could be possible to retain the Gregorian Easter calculation and still have Easter on a New Sunday.

References include :-

Algorithms for Gregorian Easter Sunday

Various algorithms are derived more or less faithfully from original and other authorities. The derivation of a published algorithm should be traceable to Clavius's Six Canons and/or Explicatio (authorised by the Papal Bull), to the British Calendar Act of 1751, or to other legal authority. I have seen the following sources and others, but there must be many more :-

The underlying arithmetic is generally good for any year; but implementations will fail if the operator mod gives a negative result, or if the range of Date is exceeded or there is other arithmetic overrange.

Gregorian Easter was first celebrated in 1583. Many implementations do not work properly all the way back to AD 0; but it is often easy enough to make them do so, which can be convenient for testing.

An implementation good for one cycle of 5,700,000 years can be extended by use of Mod(Year, 5700000) with due regard to the sign of the result.

There are both inevitable resemblances and real differences between the various algorithms; but valid ones necessarily give the same results. All use Year mod 19 which is in essence the Golden Number, or Prime. Most seem to calculate the date firstly as a Day-of-March in 22..56. Often, the date of the Paschal Full Moon (March 21..49) is an explicit intermediate.

The Epact represents the phase of the Moon. Some methods use it explicitly, others implicitly.

There is a tradition, in the determination of the date of Easter Sunday, of using only addition, subtraction, multiplication, and integer division & remainder. That may have been wise before the introduction of Boolean notation. But the work can nowadays be simplified by using conditional expressions and Boolean variables.

The algorithms below are expressed in JavaScript, to suit the Web. Further routines, including ones for Julian Easter, may be found in my Zeller pages; see also JavaScript Date and Time 0 : Date Object Information. Various Pascal/Delphi routines are in dateprox.pas and paschal.pas. VBScript routines are in VBScript Date and Time.

In testing range, check that Easter for Y mod 5700000 and for Y agree. For large range calculation, then use Y mod 5700000.

Common Mistakes

Proper testing should eliminate errors in results.

The underlying algorithm calculates Easter Sunday as a Day-of-March. Traditional algorithms then go on to convert that to month-day form. Where a language has a special form for representing dates (e.g. JavaScript Date Object, VBS CDate), and the Easter routine is to return that form, intermediate conversion to month-day is likely to be unnecessary. For example, both JavaScript Date.UTC(Y,M',D) and VBS DateSerial(Y,M,D) will accept a March date number above 31 appropriately.

See also "Mod & Div" in JavaScript Maths and Pascal Maths.

Easter Sunday is a local date on the Gregorian Calendar. In a language such as JavaScript which supports both UTC and local dates, the calculation may for speed be performed in UTC, in order to give a result expressed as Y M D. A Date Object or equivalent holding that result is likely to be interpreted as the previous local day if the code is used much to the West of Greenwich. One can check that the date given for Easter Sunday is not a Saturday.

Gregorian Easter algorithms containing Year/300 or Centade/3 are invalid from AD 4200 onwards; see in Zeller 1886, II.1 Note 1.

Some Easter Algorithm Writers

This lists some of those who have, or seem to have, developed Easter algorithms more or less independently and/or directly from the prime sources (the Bull; the Act and/or the Book). It includes a few known secondary adaptations.

Some of their algorithms are in estralgs.txt and can be tested below.

The Work of Rektor Zeller

Rektor Christian Zeller gave Julian and Gregorian Easter algorithms, in Latin and in German; the linked page set shows, translates, discusses and tests them and has links to images and translations of his four similar Date papers. His method yields fast code.

Various JavaScript Easter Sunday Routines

These routines for the date of Gregorian Easter Sunday are from my JavaScript Include Files. They do not use the standard JavaScript Date Object, and should be readily adaptable to any language.

These routines expect a numeric Year argument, and may err if given a string. They have not all been script-optimised.

Four of these are derived in The Calculation of Easter Sunday after the Book of Common Prayer of the Church of England. Function JRSEaster now uses Mod(,) instead of % to allow negative years. Function jrsEaster was optimised for speed, but has been improved slightly in function EasterJRS.

The button shows routines for Gregorian Easter Sunday derived from each of the four papers by Zeller.

JavaScript Testing

Test a Reader-Provided Function

Optionally, this function body can be tested, here against a known good one and also below.
You can enter and Define (or UnDefine) your own function!
Remember to declare all internal variables.
The return value must be the Day-of-March (DoM) of Easter Sunday, Julian or Gregorian.
Algorithms from Gauss, Butcher, Kershaw, Knuth/McClendon, Lichtenberg, Hutchins, Petrofsky, et al are in estralgs.txt, with full-range CScript test code for a Windows Command Prompt.

function UserEaster(YR) {
  }
Julian   Gregorian
   
-         - 0

Check an Easter Sunday Date List

This reads and checks a file of Easter Sunday dates, as one numeric Y M D per line (or maybe otherwise) and verifies them. For Julian Easter, include the word "Julian" in the file. Lines not containing three integers are ignored. Press the test button after the file has been completely read. Large files might need testing in chunks. Short test file.

First developed in Firefox 3, Safari 5 (first start was slow), Opera 11, and MSIE 8. Chrome 5 to at least 19 are not supportable. Date Objects are not used in this section.

File :  
Errors are reported by alerts; testing quits after six errors.

Firefox 3.6.17 in Win XP sp3 on P4/3G 1G RAM loaded and tested 1E5 dates in about a second.

 prompt> longcalc cof (dup wrt #ge wrt wrt wln) 2000 5000 for > $1.txt ; for test

General Testing and Timing

Testing
Year Range - Gregorian  
    as "Day-of-March"

Enter a modest year range and press Test. Unless the box is checked (slow), only years with discrepancies are shown. Discrepancy would be marked by '****' in the 'Err?' column. N.B. window.status shows progress, if enabled.

The 'EGRP' column uses the function EGRGregEstr(Yr) which is E.G.Richards' Algorithm P.

The 'USNO' column uses the function USNOEaster(y) from USNO's version of an algorithm due to J.-M. Oudin (1940).

The 'CDWF' column uses the function CDWFEaster(year) from Clive Feather's web site.

The 'CFAQ' column uses the function CFAQEaster(year) from Claus Tøndering's Calendar FAQ, after Oudin.

The 'Henk' column uses the function HenkEaster(year) adapted from the text of Henk Reints' site; it is stated to be a direct implementation of Lilius/Clavius.

The 'BCPA' column uses my function BCPAllEaster(YR).

The 'JRSE' column uses my function JRSEaster(YR).

The 'jrsE' column uses my function jrsEaster(YR).

The 'ZEG3' column uses the function ZEG1883(Yr) from my Zeller pages.

The 'fGrE' column uses the function goodGregEstrSun(Yr) assigned in my include file inc-estr.js.

The 'User' column uses the function UserEaster(year) if that is defined by the form above; the form is preloaded with dummy code. Various algorithms are coded suitably in estralgs.txt.

Timing
 
P4 3GHz XP sp2 IE6 : All: 7 seconds.
Note that the functions have different types of results,
and that their implementations are not equally optimised.

Other Routines

PostScript

A script (which I have not tested) from Johan Adler (Sweden); it is based on Al Petrofsky's Easter21ops, which is in my estralgs.txt.

/easterJA3 {
  yr dup dup dup 100 idiv 2267 mul exch 400 idiv 6775 mul sub 3411 add
  dup 25 idiv 319 mul 4 -1 roll 19 mod 6060 mul add 1 sub 9570 mod 330 idiv
  dup 3 -1 roll add 3 -1 roll 5 mul 4 idiv add 7 mod neg add 28 add
} bind def

LONGCALC

My vast-integer RPN calculators LONGCALC and VASTCALC, via programs index, have Gregorian Easter Sunday routines #eg #ge.

See also my pages
The Calculation of Easter Sunday after the Book of Common Prayer of the Church of England;
Consequences of the Easter Rules,
The Dates of Moveable Feasts & Fasts, Annual Holiday Dates,
Date Miscellany I, Date Miscellany II,
Date and Time Index and Links,
Zeller's Formulae and Papers, and The Hebrew Calendar.
Home Page
Mail: no HTML
© Dr J R Stockton, near London, UK.
All Rights Reserved.
These pages are tested mainly with Firefox 3 and W3's Tidy.
This site, http://www.merlyn.demon.co.uk/, is maintained by me.
Head.