|
||||||||||||||||||||||||
|
About the Greek Easter and Greek Easter calculator
Concepts that are fairly complicated tend to have an uncertain mental life that suffers from creeping confusion, occlusion and vagueness. Particularly troublesome are such concepts when they occur again and again at different intervals or periodically, as if only to remind you that once again you failed to memorize well enough their intricacies.
One of those fuckers is the calculation of the date of Easter or Pasqua.
Here, I try to, once and for all, demystify this issue in a concise and effective manner. I only deal with the Greek Pasqua as the Catholic one is of no importance to me (and its calculation is even more complicated).
I found very good quality info here: Calendar FAQ
The basic concept is that the Greek Pasqua is:
- the first Sunday,
- after the calendar's official (not astronomical) first full moon
- after the calendar's official (not astronomical) vernal equinox
- according to the older Julian and NOT the contemporary Gregorian calendar
Both new (Gregorian) and old (Julian) calendarists in the Orthodox church, use the JULIAN calendar for the calculation of the Pasqua (Easter). So although they don't agree on Xmas they do agree on Pasqua (old and new calendarist Pasquas coincide in time).
In both the calendars the official vernal equinox is on March 21.
To calculate the Julian Easter date of a specific year you have to:
- calculate what is called the Golden Number (association of moon phases and dates of a particular year): GoldenNumber = (year mod 19)+1
- Then use the following table:
Golden Golden Golden Number Full moon Number Full moon Number Full moon ------------------ ------------------ ------------------ 1 5 April 8 18 April 15 1 April 2 25 March 9 7 April 16 21 March 3 13 April 10 27 March 17 9 April 4 2 April 11 15 April 18 29 March 5 22 March 12 4 April 19 17 April 6 10 April 13 24 March 7 30 March 14 12 April
- Easter Sunday is the first Sunday following the above full moon date.
If the full moon falls on a Sunday, Easter Sunday is the following
Sunday.
This is not the end of the story though! You now have the date of the Pasqua in the Julian calendar for a given year, but for it to make sense it needs to be converted to the corresponding date in the Gregorian calendar, which is the one most of the world is using for most practical matters and international purposes.
There exist nice date converters on the web (like this one) but I wanted to make my javascript based Greek Easter calculator (see below) complete. For that purpose I needed to first understand how the conversion works and then implement it in a simple way in my script.
The script shown at work below (source also listed) first uses Oudin's 1940 algorithm to determine the Julian date of the Pasqua for a given year and then performs a conversion of that date to the Gregorian calendar (first it finds the Julian Day number - a unique number assigned to every day since 1 January 4713 BC - and then converts that to the corresponding Gregorian date).
Year
Also see an older paper of mine on related issues.
Javascript source is below.
/**
This algorithm is based in part on the algorithm of Oudin (1940) as
quoted in "Explanatory Supplement to the Astronomical Almanac",
P. Kenneth Seidelmann, editor.
People who want to dig into the workings of this algorithm, may be
interested to know that
G is the Golden Number-1
H is 23-Epact (modulo 30)
I is the number of days from 21 March to the Paschal full moon
J is the weekday for the Paschal full moon (0=Sunday, 1=Monday,
etc.)
L is the number of days from 21 March to the Sunday on or before
the Paschal full moon (a number between -6 and 28)
*/
var EasterMonth, EasterDay;
function getGreekEasterDate(year){
var G = year % 19;
//For the Julian calendar:
var I = (19*G + 15) % 30;
var J = (year + Math.floor(year/4) + I) % 7;
//For the Gregorian calendar:
//var C = year/100;
//var H = (C - C/4 - (8*C+13)/25 + 19*G + 15) mod 30;
//var I = H - (H/28)*(1 - (29/(H + 1))*((21 - G)/11));
//var J = (year + year/4 + I + 2 - C + C/4) mod 7;
//Thereafter, for both calendars:
var L = I - J;
EasterMonth = 3 + Math.floor((L + 40)/44);
EasterDay = L + 28 - 31*Math.floor(EasterMonth/4);
return EasterMonth + "/" + EasterDay;
}
// for now, it simply accepts a Julian Date and returns the Julian Day
function getJD(day,month,year){
var a = Math.floor((14-month)/12);
var y = year+4800-a;
var m = month + 12*a - 3;
//For a date in the Gregorian calendar:
//JD = day + (153*m+2)/5 + y*365 + y/4 - y/100 + y/400 - 32045
//For a date in the Julian calendar:
//JD = day + (153*m+2)/5 + y*365 + y/4 - 32083
return day + Math.floor((153*m+2)/5) + y*365 + Math.floor(y/4) - 32083;
}
// for now,it simply accepts the Julian Day and returns the Gregorian date
function getDate(JD){
//For the Gregorian calendar:
var a = JD + 32044
var b = Math.floor((4*a+3)/146097);
var c = a - Math.floor((b*146097)/4);
//For the Julian calendar:
//var b = 0;
//var c = JD + 32082;
//Then, for both calendars:
var d = Math.floor((4*c+3)/1461);
var e = c - Math.floor((1461*d)/4);
var m = Math.floor((5*e+2)/153);
var day = e - Math.floor((153*m+2)/5) + 1;
var month = m + 3 - 12*Math.floor(m/10);
var year = b*100 + d - 4800 + Math.floor(m/10);
return "day/month/year: " + day + "/" + month + "/" + year;
}
function showdate(){
alert("Easter Sunday for the year " + document.getElementById("year").value +
" is Julian month/year: " +
getGreekEasterDate(parseInt(document.getElementById("year").value)) +
" which translates to " +
getDate(getJD(EasterDay,EasterMonth,
parseInt(document.getElementById("year").value))) +
" Gregorian");
}




Excellent! I used some of
Excellent! I used some of this information to create a greek holidays file for a ruby library (holidays), see https://github.com/alexdunae/holidays
Very cool bro, cheers!
Very cool bro, cheers!
Post new comment