Date de Pâques et du mercredi des Cendres
Ci-dessous le script qui calcule et affiche la date de Pâques.
/*
paques.js
Date de Pâques et du mercredi des Cendres, pour l'année courante et pour l'année suivante.
Algorithme d'Oudin.
*/
function div(a, b)
{
return Math.trunc(a / b)
}
function EasterNumber(aYear)
{
var g = 0;
var c = 0;
var e = 0;
var h = 0;
var k = 0;
var p = 0;
var q = 0;
var i = 0;
var b = 0;
var j = 0;
g = aYear % 19;
c = div(aYear, 100);
e = div(8 * c + 13, 25);
h = (19 * g + c - div(c, 4) - e + 15) % 30;
k = div(h, 28);
p = div(29, h + 1);
q = div(21 - g, 11);
i = (k * p * q - 1) * k + h;
b = div(aYear, 4) + aYear;
j = (b + i + 2 + div(c, 4) - c) % 7;
return 28 + i - j;
}
Date.prototype.addDays = function(aDayNumber) /* https://stackoverflow.com/a/563442/18595765 */
{
var lDate = new Date(this.valueOf());
lDate.setDate(lDate.getDate() + aDayNumber);
return lDate;
}
function DateToWords(aDate) {
const cMonthName = ["janvier", "février", "mars", "avril"];
return aDate.getDate().toString().concat(" ", cMonthName[aDate.getMonth()]);
}
function WriteEasterDate(aYear)
{
var lEasterNumber = EasterNumber(aYear);
var lMonth = 0;
var lDay = 0;
if (lEasterNumber <= 31)
{
lMonth = 3;
lDay = lEasterNumber;
}
else
{
lMonth = 4;
lDay = lEasterNumber - 31;
}
var lEaster = new Date(aYear, lMonth - 1, lDay);
document.write(
"En ", aYear,
", le dimanche de Pâques est le ", DateToWords(lEaster),
". Le premier jour du Carême est le ", DateToWords(lEaster.addDays(-46)),
". "
);
}
var lYear = new Date().getFullYear()
document.write("");
/* Écrire la date de Pâques et du mercredi des Cendres pour l'année courante. */
WriteEasterDate(lYear);
document.write("
");