Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Доработать скрипт (https://javascript.ru/forum/misc/78800-dorabotat-skript.html)

Блондинка 08.11.2019 16:01

В скрипте что то говорится про старый и новый стиль, но для меня это китайская грамота, в которой я нихрена не понимаю, если бы хоть что-то понимала то соответственно и топик не создавала...

laimas 08.11.2019 16:19

Ну если разная, узнавайте век и оперируйте разницей этого века.

Блондинка 08.11.2019 17:27

laimas,
вот запускаемый пример
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <style>
    div { width: 70%; border: 1px solid #a9a9a9; border-radius: 12px/9px; padding: 10px 25px; margin: 0 20px 5px 0; }
    input { display: inline-block; text-align: center; }
    </style>
</head>
<body>
    <div>
        <input id="YearEntry" type="number" min="326" max="4099" step="1" value="2019" />
        <input id="button1" type="button" value="Расcчитать" />
    </div>
    <div>
        Католическая пасха<br />
        <span id="Catholic_Easter"></span>
    </div>
    <div>
        Православная пасха<br />
        <span id="Orthodox_Easter"></span>
    </div>
    <div>
        Радуница<br />
        <span id="Orthodox_Radunitsa"></span>
    </div>
    <div>
        Вербное воскресенье<br />
        <span id="palm_Sunday_Orthodox"></span>
    </div>
    <div>
        Масленица<br />
        <span id="Maslenitsa_Orthodox"></span>
    </div>
    <script>
        function catholicDate(year) {
            // https://ru.wikipedia.org/wiki/Алгоритм_Гаусса_вычисления_даты_Пасхи
            // Пример на 1777 год (год рождения Карла Гаусса): год = 1777 
            // a = год mod 19      a = 10 
            var a = year % 19;
            // b = год mod 4       b = 1 
            var b = year % 4;
            // c = год mod 7       c = 6 
            var c = year % 7;
            // k = целая часть (год/100)           k = 17 
            var k = Math.floor(year / 100);
            // p = целая часть ((13 + 8k)/25)      p = 5 
            var p = Math.floor((13 + 8 * k) / 25);
            // q = целая часть (k/4)               q = 4 
            var q = Math.floor(k / 4);
            // M = (15 - p + k - q) mod 30         M = 23 
            var m = (15 - p + k - q) % 30;
            // N = (4 + k - q) mod 7               N = 3 
            var n = (4 + k - q) % 7;
            // d = (19a + M) mod 30                d = 3 
            var d = (19 * a + m) % 30;
            // e = (2b + 4c + 6d + N) mod 7        e = 5 
            var e = (2 * b + 4 * c + 6 * d + n) % 7;
            // Дата Пасхи по новому стилю: 22 + d + e марта или d + e - 9 апреля       30 марта 
            // Если d = 29 и e = 6, то вместо 26 апреля будет 19 апреля 
            if (d === 29 && e === 6)
                return new Date(year, 3, 19);
            // Если d = 28, e = 6 и (11M + 11) mod 30 < 19, то вместо 25 апреля будет 18 апреля 
            if (d === 28 && e === 6 && ((11 * m + 11) % 30 < 19))
                return new Date(year, 3, 18);
            if (d + e > 9)
                return new Date(year, 3, d + e - 9);
            else
                return new Date(year, 2, 22 + d + e);
        }
        function orthodoxDate(year) {
            // https://ru.wikipedia.org/wiki/Алгоритм_Гаусса_вычисления_даты_Пасхи
            // Разделить номер года на 19 и определить остаток от деления a.
            var a = year % 19;
            // Разделить номер года на 4 и определить остаток от деления b.
            var b = year % 4;
            // Разделить номер года на 7 и определить остаток от деления c.
            var c = year % 7;
            // Разделить сумму 19a + 15 на 30 и определить остаток d.
            var d = (19 * a + 15) % 30;
            // Разделить сумму 2b + 4c + 6d + 6 на 7 и определить остаток e.
            var e = (2 * b + 4 * c + 6 * d + 6) % 7;
            // Определить сумму f = d + e.
            var f = d + e;
            // (по старому стилю) Если f ≤ 9, то Пасха будет праздноваться 22 + f марта; если f > 9, то Пасха будет праздноваться f — 9 апреля.
            // (по новому стилю) Если f ≤ 26, то Пасха будет праздноваться 4 + f апреля; если f > 26, то Пасха будет праздноваться f — 26 мая. 
            return f <= 26
                ? new Date(year, 3, 4 + f)
                : new Date(year, 4, f - 26);
        }
        // Все даты отображаем в едином формате
        function formatDate(date) {
        return date.toLocaleDateString("ru", { weekday: "long", day: "numeric", month: "long", year: "numeric" }).replace(/^.?|,/g, function(v, i) {
        return !i ? v.toUpperCase() : '<br>'
        });
        }
document.addEventListener("DOMContentLoaded", document_domcontentloaded);
        function document_domcontentloaded(){
            document.getElementById("YearEntry").value = new Date().getFullYear();
            button1_click();
            document.getElementById("button1").onclick = button1_click;
        }
        function button1_click() {
            var year = document.getElementById("YearEntry").value;
            document.getElementById("Catholic_Easter").innerHTML = formatDate(catholicDate(year));
            var date1 = orthodoxDate(year);
            document.getElementById("Orthodox_Easter").innerHTML = formatDate(date1);
            var date2 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() + 9);
            document.getElementById("Orthodox_Radunitsa").innerHTML = formatDate(date2);
            var date3 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() - 7);
            document.getElementById("palm_Sunday_Orthodox").innerHTML = formatDate(date3);
            var date4 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() - 49);
            document.getElementById("Maslenitsa_Orthodox").innerHTML = formatDate(date4);
        }
    </script>
</body>
</html>

Блондинка 08.11.2019 17:38

насколько я поняла то в 59-70 строках пояснятся как получить даты католической пасхи и по старому и по новому стилям

а в 85-90 строках как получить даты православной пасхи по обоим стилям

только всё это для меня китайская грамота, где я нихрена не понимаю,

кто нибудь может помочь разобраться?

Блондинка 08.11.2019 18:10

laimas, рони, подскажите какие именно вычисления надо добавить чтобы получить даты по старому стилю

laimas 09.11.2019 02:29

Блондинка, кто бы мне втолковал что такое вообще Пасха. Нет, я конечно же знаю, что на этот день пекут куличи и красят яйца, примета такая, тем более закрепившееся у меня после того как перепутав отвар луковичной шелухи с компотом я его попробовал.

Это все мои познания в этой области и я никогда не стану вникать от какого рождества, что и как считать. Только при условии, что естественно, какой-то выгоды. Потому, что мне это совсем не интересно и забивать голову этой чепухой я не стану. Вот я ненавижу майонез, в моем понимании, эту гадость придумали те, которым было лень делать сметану. Это не обвинение тех, кто его ест, это чисто моя физиология и меня ничто не заставит его есть добровольно.

Два дня назад свершилась революция, правда в далеком 2017, и на тот момент это был старый стиль, а значит 25 октября. И, допустим, нам повезло, что она не случилась во времена правления Понтия Пилата, так как пересчитывать ее на далекие века не требуется, чай не пасха же. Но если функция catholicDate(year) узнает дату пасхи, и корректно, по старому стилю для эпох от Понтия Пилата и до свершения революции, а далее нет, то корректируйте ее аргумент year, узнавая век или год в этом аргументе. Или, если вы в курсе всего бытия Христа, напишите сами такой расчет для после революционной эпохи. А я даже не понимаю, что у вас там за проблема с этим праздником, вот о тех что Зимний брали, я еще могу понимать. :)

Блондинка 11.11.2019 19:20

народ, в скрипте почти всё есть, на этой странице подробнее объясняется что нужно чтобы получить даты пасхи и по новому и по старому стилю, и католической и православной, но для меня всё это что китайская грамота, кто может помочь?

Блондинка 19.11.2019 17:33

laimas,
кажется я не правильно подходила к решению вопроса, католическая пасха всегда празднуется только по новому стилю, значит наверное правильнее будет высчитывать даты католических праздников по новому стилю и потом конвертировать в старый стиль с помощью сервиса Rise, а православные праздники поскольку православная церковь пользуется юлианский календарём, наверное правильнее будет высчитывать по старому стилю и потом с помощью сервиса Rise, конвертировать в новый стиль...

laimas 19.11.2019 19:11

:D Блондинка, я уже писал - не надо нагружать меня Христом. Если то, что вы пишите правильно, ну так конвертируйте, а что и зачем ..., я далек от этого.

Блондинка 23.11.2019 04:49

Rise,
возможно ли объединить эти два скрипта, и конвертировать даты католических праздников в старый стиль, а даты православных праздников конвертировать в новый стиль?

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<style>
div { width: 70%; border: 1px solid #a9a9a9; border-radius: 12px/9px; padding: 10px 25px; margin: 0 20px 5px 0; }
input { display: inline-block; text-align: center; }
</style>
</head>
<body>
<div>
<input id="YearEntry" type="number" min="326" max="4099" step="1" value="2019" />
<input id="button1" type="button" value="Расcчитать" />
</div>
<div>
Католическая пасха<br>
<span id="Catholic_Easter"></span>
</div>
<div>
Православная пасха<br>
<span id="Orthodox_Easter"></span> (по новому стилю)<br>
<span id="Orthodox_Easter_ul"></span> (по старому стилю)
</div>
<div>
Радуница<br>
<span id="Orthodox_Radunitsa"></span>
</div>
<div>
Вербное воскресенье<br>
<span id="palm_Sunday_Orthodox"></span>
</div>
<div>
Масленица<br>
<span id="Maslenitsa_Orthodox"></span>
</div>
<script>
function catholicDate(year) {
// https://ru.wikipedia.org/wiki/Алгоритм_Гаусса_вычисления_даты_Пасхи
// Пример на 1777 год (год рождения Карла Гаусса): год = 1777 
// a = год mod 19 a = 10 
var a = year % 19;
// b = год mod 4 b = 1 
var b = year % 4;
// c = год mod 7 c = 6 
var c = year % 7;
// k = целая часть (год/100) k = 17 
var k = Math.floor(year / 100);
// p = целая часть ((13 + 8k)/25) p = 5 
var p = Math.floor((13 + 8 * k) / 25);
// q = целая часть (k/4) q = 4 
var q = Math.floor(k / 4);
// M = (15 - p + k - q) mod 30 M = 23 
var m = (15 - p + k - q) % 30;
// N = (4 + k - q) mod 7 N = 3 
var n = (4 + k - q) % 7;
// d = (19a + M) mod 30 d = 3 
var d = (19 * a + m) % 30;
// e = (2b + 4c + 6d + N) mod 7 e = 5 
var e = (2 * b + 4 * c + 6 * d + n) % 7;
// Дата Пасхи по новому стилю: 22 + d + e марта или d + e - 9 апреля 30 марта 
// Если d = 29 и e = 6, то вместо 26 апреля будет 19 апреля 
if (d === 29 && e === 6)
return new Date(year, 3, 19);
// Если d = 28, e = 6 и (11M + 11) mod 30 < 19, то вместо 25 апреля будет 18 апреля 
if (d === 28 && e === 6 && ((11 * m + 11) % 30 < 19))
return new Date(year, 3, 18);
if (d + e > 9)
return new Date(year, 3, d + e - 9);
else
return new Date(year, 2, 22 + d + e);
}
function orthodoxDate(year) {
// https://ru.wikipedia.org/wiki/Алгоритм_Гаусса_вычисления_даты_Пасхи
// Разделить номер года на 19 и определить остаток от деления a.
var a = year % 19;
// Разделить номер года на 4 и определить остаток от деления b.
var b = year % 4;
// Разделить номер года на 7 и определить остаток от деления c.
var c = year % 7;
// Разделить сумму 19a + 15 на 30 и определить остаток d.
var d = (19 * a + 15) % 30;
// Разделить сумму 2b + 4c + 6d + 6 на 7 и определить остаток e.
var e = (2 * b + 4 * c + 6 * d + 6) % 7;
// Определить сумму f = d + e.
var f = d + e;
// (по новому стилю) Если f ≤ 26, то Пасха будет праздноваться 4 + f апреля; если f > 26, то Пасха будет праздноваться f — 26 мая. 
return f <= 26
? new Date(year, 3, 4 + f)
: new Date(year, 4, f - 26);
}
function orthodoxDate_ul(year) {
// https://ru.wikipedia.org/wiki/Алгоритм_Гаусса_вычисления_даты_Пасхи
// Разделить номер года на 19 и определить остаток от деления a.
var a = year % 19;
// Разделить номер года на 4 и определить остаток от деления b.
var b = year % 4;
// Разделить номер года на 7 и определить остаток от деления c.
var c = year % 7;
// Разделить сумму 19a + 15 на 30 и определить остаток d.
var d = (19 * a + 15) % 30;
// Разделить сумму 2b + 4c + 6d + 6 на 7 и определить остаток e.
var e = (2 * b + 4 * c + 6 * d + 6) % 7;
// Определить сумму f = d + e.
var f = d + e;
// (по старому стилю) Если f ≤ 9, то Пасха будет праздноваться 22 + f марта; если f > 9, то Пасха будет праздноваться f — 9 апреля.
return f <= 9
? new Date(year, 2, 22 + f)
: new Date(year, 3, f - 9);
}
// Все даты отображаем в едином формате
function formatDate(date) {
return date.toLocaleDateString("ru", { weekday: "long", day: "numeric", month: "long", year: "numeric" }).replace(/^.?|,/g, function(v, i) {
return !i ? v.toUpperCase() : '<br>'
});
}
document.addEventListener("DOMContentLoaded", document_domcontentloaded);
function document_domcontentloaded(){
document.getElementById("YearEntry").value = new Date().getFullYear();
button1_click();
document.getElementById("button1").onclick = button1_click;
}
function button1_click() {
var year = document.getElementById("YearEntry").value;
document.getElementById("Catholic_Easter").innerHTML = formatDate(catholicDate(year));
var date1 = orthodoxDate(year);
document.getElementById("Orthodox_Easter").innerHTML = formatDate(date1);
var date1_1 = orthodoxDate_ul(year);
document.getElementById("Orthodox_Easter_ul").innerHTML = formatDate(date1_1);
var date2 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() + 9);
document.getElementById("Orthodox_Radunitsa").innerHTML = formatDate(date2);
var date3 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() - 7);
document.getElementById("palm_Sunday_Orthodox").innerHTML = formatDate(date3);
var date4 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() - 49);
document.getElementById("Maslenitsa_Orthodox").innerHTML = formatDate(date4);
}
</script>
</body>
</html>

Блондинка 23.11.2019 04:51

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Gregorian & Julian converter via JDN (Julian Day Number)</title>
</head>
<body>
<small>
* The algorithm is valid for all (possibly proleptic) Gregorian dates ≥ 24.11.4714 BCE and Julian dates ≥ 01.01.4713 BCE.
<a href="https://en.wikipedia.org/wiki/Julian_day" target="_blank">References</a><br><br>
</small>
<form name="converter">
    <select name="wDay"></select>
    <label>Gn:</label>
    <select name="gDay"></select>
    <select name="gMonth"></select>
    <input type="number" name="gYear" min="-4713" style="width:8ch">
    <select name="gEra"></select>
    <input type="button" name="gCalc" value="to Jn">
    <label>Jn:</label>
    <select name="jDay"></select>
    <select name="jMonth"></select>
    <input type="number" name="jYear" min="-4712" style="width:8ch">
    <select name="jEra"></select>
    <input type="button" name="jCalc" value="to Gn">
    <br><br>
    <button type="button" class="express" value="g_n_o_w_ce">Now</button>
    <button type="button" class="express" value="g_15_10_1582_ce">Gn: 15.10.1582 CE</button>
    <button type="button" class="express" value="j_1_1_45_bce">Jn: 01.01.45 BCE</button>
    <button type="button" class="express" value="j_1_1_4713_bce">Jn: 01.01.4713 BCE</button>
    <button type="button" class="express" value="j_1_1_3268_ce">Jn: 01.01.3268 CE</button>
    <button type="button" class="express" value="j_1_1_1_ce">Jn: 01.01.1 CE</button>
    <!-- Express-button format C_D_M_Y_E: Calendar "j"/"g", Day, Month, Year, Era "ce"/"bce" -->
</form>
<script>
document.addEventListener('DOMContentLoaded', function () {
// https://en.wikipedia.org/wiki/Julian_day#Julian_day_number_calculation
// The algorithms are valid for JDN >= 0, Gregorian >= 24.11.-4713, Julian >= 01.01.-4712
function gregorianToJdn(d, m, y) {
    return tr((1461 * (y + 4800 + tr((m - 14) / 12))) / 4) +
           tr((367 * (m - 2 - 12 * tr((m - 14) / 12))) / 12) -
           tr((3 * tr((y + 4900 + tr((m - 14) / 12)) / 100)) / 4) + d - 32075;
}
function julianToJdn(d, m, y) {
    return 367 * y - tr((7 * (y + 5001 + tr((m - 9) / 7))) / 4) + tr((275 * m) / 9) + d + 1729777;
}
function jdnToJulianOrGregorian(j, to) { // to: true (julian), false (gregorian)
    var f = (to) ? (j + 1401) : (j + 1363 + tr((tr((4 * j + 274277) / 146097) * 3) / 4));
    var e = 4 * f + 3, h = 5 * tr((e % 1461) / 4) + 2;
    var d = tr((h % 153) / 5) + 1, m = ((tr(h / 153) + 2) % 12) + 1, y = tr(e / 1461) - 4716 + tr((14 - m) / 12);
    return { d: d, m: m, y: y }; 
}
function jdnToWeekDay(j) { return (j % 7) + 1; }
function tr(n) { return n - n % 1; } // truncate (for integer division)
// -- wiki end --
var C = document.converter;
// options
var wdays = ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'];
for (var o = '', i = 0; i < wdays.length; i++) o += '<option value="' + (i + 1) + '">' + wdays[i] + '</option>';
C.wDay.innerHTML = o;
for (var o = '', i = 1; i <= 31; i++) o += '<option value="' + i  + '">' + i + '</option>';
C.gDay.innerHTML = C.jDay.innerHTML = o;
var months = ['January','February','March','April','May','June','July','August','September','October','November','December'];
for (var o = '', i = 0; i < months.length; i++) o += '<option value="' + (i + 1) + '">' + months[i] + '</option>';
C.gMonth.innerHTML = C.jMonth.innerHTML = o;
var eras = ['CE','BCE'], _eras = ['ce','bce'];
for (var o = '', i = 0; i < eras.length; i++) o += '<option value="' + _eras[i] + '">' + eras[i] + '</option>';
C.gEra.innerHTML = C.jEra.innerHTML = o;
// -- options end --
C.gCalc.onclick = function () {
    var gd = +C.gDay.value, gm = +C.gMonth.value, gy = historicalToAstronomical(+C.gYear.value, C.gEra.value);
    var jdn = gregorianToJdn(gd, gm, gy), wd = jdnToWeekDay(jdn), jd = jdnToJulianOrGregorian(jdn, true);
    var jy = astronomicalToHistorical(jd.y);
    C.wDay.value = wd, C.jDay.value = jd.d, C.jMonth.value = jd.m, C.jYear.value = jy.y, C.jEra.value = jy.e;
    onUpdateAll(jdn);
};
C.jCalc.onclick = function () {
    var jd = +C.jDay.value, jm = +C.jMonth.value, jy = historicalToAstronomical(+C.jYear.value, C.jEra.value);
    var jdn = julianToJdn(jd, jm, jy), wd = jdnToWeekDay(jdn), gd = jdnToJulianOrGregorian(jdn, false);
    var gy = astronomicalToHistorical(gd.y);
    C.wDay.value = wd, C.gDay.value = gd.d, C.gMonth.value = gd.m, C.gYear.value = gy.y, C.gEra.value = gy.e;
    onUpdateAll(jdn);
};
function initDate(c, d, m, y, e) {
    if (d + m + y == 'now') { var n = new Date(); d = n.getDate(), m = n.getMonth() + 1, y = n.getFullYear(); }
    C[c + 'Day'].value = d, C[c + 'Month'].value = m, C[c + 'Year'].value = y, C[c + 'Era'].value = e;
    C[c + 'Calc'].onclick();
}
function historicalToAstronomical(y, e) { // e: 'ce', 'bce'
    e = (y < 1) ? 'bce' : e;
    return ((e == 'bce') && y > 0) ? (1 - y) : y;
}
function astronomicalToHistorical(y) {
    var e = (y < 1) ? 'bce' : 'ce';
    return { y: (e == 'bce') ? -(y - 1) : y, e: e };
}
for (var ess = C.querySelectorAll('.express'), es, i = 0; i < ess.length; i++) {
     es = ess[i], es.onclick = Function.prototype.apply.bind(initDate, null, es.value.split('_'));
}
// Express-url format ...?C=D_M_Y_E
var m = location.search.match(/(j|g)=(\d+)_(\d+)_(\d+)_(ce|bce)/);
if (m) { initDate(m[1], m[2], m[3], m[4], m[5]); } else { initDate('g', 'n', 'o', 'w', 'ce'); }
function onUpdateAll(jdn) {
    console.log('JDN:', jdn);
    console.assert(jdn >= 2299161, 'Proleptic: Gn < 15.10.1582 CE');
    console.assert(jdn >= 1704987, 'Proleptic: Jn < 01.01.45 BCE');
    console.assert(jdn >= 0, 'Invalid: Gn < 24.11.4714 BCE, Jn < 01.01.4713 BCE');
}
});
</script>
</body>
</html>

Блондинка 23.11.2019 05:56

Если быть точнее, то первый скрипт надо исправить так, и все даты конвертировать в тот стиль которого нету в диве
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<style>
div { width: 70%; border: 1px solid #a9a9a9; border-radius: 12px/9px; padding: 10px 25px; margin: 0 20px 5px 0; }
input { display: inline-block; text-align: center; }
</style>
</head>
<body>
<div>
<input id="YearEntry" type="number" min="326" max="4099" step="1" value="2019" />
<input id="button1" type="button" value="Расcчитать" />
</div>
<div>
Католическая пасха<br>
<span id="Catholic_Easter"></span><br>
по григорианскому календарю (новый стиль)
</div>
<div>
Православная пасха<br>
<span id="Orthodox_Easter"></span><br>
по юлианскому календарю (старый стиль)
</div>
<div>
Радуница<br>
<span id="Orthodox_Radunitsa"></span><br>
по юлианскому календарю (старый стиль)
</div>
<div>
Вербное воскресенье<br>
<span id="palm_Sunday_Orthodox"></span><br>
по юлианскому календарю (старый стиль)
</div>
<div>
Масленица<br>
<span id="Maslenitsa_Orthodox"></span><br>
по юлианскому календарю (старый стиль)
</div>
<script>
function catholicDate(year) {
// https://ru.wikipedia.org/wiki/Алгоритм_Гаусса_вычисления_даты_Пасхи
// Пример на 1777 год (год рождения Карла Гаусса): год = 1777 
// a = год mod 19 a = 10 
var a = year % 19;
// b = год mod 4 b = 1 
var b = year % 4;
// c = год mod 7 c = 6 
var c = year % 7;
// k = целая часть (год/100) k = 17 
var k = Math.floor(year / 100);
// p = целая часть ((13 + 8k)/25) p = 5 
var p = Math.floor((13 + 8 * k) / 25);
// q = целая часть (k/4) q = 4 
var q = Math.floor(k / 4);
// M = (15 - p + k - q) mod 30 M = 23 
var m = (15 - p + k - q) % 30;
// N = (4 + k - q) mod 7 N = 3 
var n = (4 + k - q) % 7;
// d = (19a + M) mod 30 d = 3 
var d = (19 * a + m) % 30;
// e = (2b + 4c + 6d + N) mod 7 e = 5 
var e = (2 * b + 4 * c + 6 * d + n) % 7;
// Дата Пасхи по новому стилю: 22 + d + e марта или d + e - 9 апреля 30 марта 
// Если d = 29 и e = 6, то вместо 26 апреля будет 19 апреля 
if (d === 29 && e === 6)
return new Date(year, 3, 19);
// Если d = 28, e = 6 и (11M + 11) mod 30 < 19, то вместо 25 апреля будет 18 апреля 
if (d === 28 && e === 6 && ((11 * m + 11) % 30 < 19))
return new Date(year, 3, 18);
if (d + e > 9)
return new Date(year, 3, d + e - 9);
else
return new Date(year, 2, 22 + d + e);
}
function orthodoxDate(year) {
// https://ru.wikipedia.org/wiki/Алгоритм_Гаусса_вычисления_даты_Пасхи
// Разделить номер года на 19 и определить остаток от деления a.
var a = year % 19;
// Разделить номер года на 4 и определить остаток от деления b.
var b = year % 4;
// Разделить номер года на 7 и определить остаток от деления c.
var c = year % 7;
// Разделить сумму 19a + 15 на 30 и определить остаток d.
var d = (19 * a + 15) % 30;
// Разделить сумму 2b + 4c + 6d + 6 на 7 и определить остаток e.
var e = (2 * b + 4 * c + 6 * d + 6) % 7;
// Определить сумму f = d + e.
var f = d + e;
// (по старому стилю) Если f ≤ 9, то Пасха будет праздноваться 22 + f марта; если f > 9, то Пасха будет праздноваться f — 9 апреля.
return f <= 9
? new Date(year, 2, 22 + f)
: new Date(year, 3, f - 9);
}
// Все даты отображаем в едином формате
function formatDate(date) {
return date.toLocaleDateString("ru", { weekday: "long", day: "numeric", month: "long", year: "numeric" }).replace(/^.?|,/g, function(v, i) {
return !i ? v.toUpperCase() : '<br>'
});
}
document.addEventListener("DOMContentLoaded", document_domcontentloaded);
function document_domcontentloaded(){
document.getElementById("YearEntry").value = new Date().getFullYear();
button1_click();
document.getElementById("button1").onclick = button1_click;
}
function button1_click() {
var year = document.getElementById("YearEntry").value;
document.getElementById("Catholic_Easter").innerHTML = formatDate(catholicDate(year));
var date1 = orthodoxDate(year);
document.getElementById("Orthodox_Easter").innerHTML = formatDate(date1);
var date2 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() + 9);
document.getElementById("Orthodox_Radunitsa").innerHTML = formatDate(date2);
var date3 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() - 7);
document.getElementById("palm_Sunday_Orthodox").innerHTML = formatDate(date3);
var date4 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() - 49);
document.getElementById("Maslenitsa_Orthodox").innerHTML = formatDate(date4);
}
</script>
</body>
</html>


Часовой пояс GMT +3, время: 01:26.