Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #41 (permalink)  
Старый 08.11.2019, 16:01
Аватар для Блондинка
Профессор
Отправить личное сообщение для Блондинка Посмотреть профиль Найти все сообщения от Блондинка
 
Регистрация: 24.02.2019
Сообщений: 806

В скрипте что то говорится про старый и новый стиль, но для меня это китайская грамота, в которой я нихрена не понимаю, если бы хоть что-то понимала то соответственно и топик не создавала...
Ответить с цитированием
  #42 (permalink)  
Старый 08.11.2019, 16:19
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Ну если разная, узнавайте век и оперируйте разницей этого века.
Ответить с цитированием
  #43 (permalink)  
Старый 08.11.2019, 17:27
Аватар для Блондинка
Профессор
Отправить личное сообщение для Блондинка Посмотреть профиль Найти все сообщения от Блондинка
 
Регистрация: 24.02.2019
Сообщений: 806

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>

Последний раз редактировалось Блондинка, 19.11.2019 в 01:04.
Ответить с цитированием
  #44 (permalink)  
Старый 08.11.2019, 17:38
Аватар для Блондинка
Профессор
Отправить личное сообщение для Блондинка Посмотреть профиль Найти все сообщения от Блондинка
 
Регистрация: 24.02.2019
Сообщений: 806

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

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

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

кто нибудь может помочь разобраться?
Ответить с цитированием
  #45 (permalink)  
Старый 08.11.2019, 18:10
Аватар для Блондинка
Профессор
Отправить личное сообщение для Блондинка Посмотреть профиль Найти все сообщения от Блондинка
 
Регистрация: 24.02.2019
Сообщений: 806

laimas, рони, подскажите какие именно вычисления надо добавить чтобы получить даты по старому стилю
Ответить с цитированием
  #46 (permalink)  
Старый 09.11.2019, 02:29
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

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

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

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

Последний раз редактировалось laimas, 09.11.2019 в 02:55.
Ответить с цитированием
  #47 (permalink)  
Старый 11.11.2019, 19:20
Аватар для Блондинка
Профессор
Отправить личное сообщение для Блондинка Посмотреть профиль Найти все сообщения от Блондинка
 
Регистрация: 24.02.2019
Сообщений: 806

народ, в скрипте почти всё есть, на этой странице подробнее объясняется что нужно чтобы получить даты пасхи и по новому и по старому стилю, и католической и православной, но для меня всё это что китайская грамота, кто может помочь?
Ответить с цитированием
  #48 (permalink)  
Старый 19.11.2019, 17:33
Аватар для Блондинка
Профессор
Отправить личное сообщение для Блондинка Посмотреть профиль Найти все сообщения от Блондинка
 
Регистрация: 24.02.2019
Сообщений: 806

laimas,
кажется я не правильно подходила к решению вопроса, католическая пасха всегда празднуется только по новому стилю, значит наверное правильнее будет высчитывать даты католических праздников по новому стилю и потом конвертировать в старый стиль с помощью сервиса Rise, а православные праздники поскольку православная церковь пользуется юлианский календарём, наверное правильнее будет высчитывать по старому стилю и потом с помощью сервиса Rise, конвертировать в новый стиль...
Ответить с цитированием
  #49 (permalink)  
Старый 19.11.2019, 19:11
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Блондинка, я уже писал - не надо нагружать меня Христом. Если то, что вы пишите правильно, ну так конвертируйте, а что и зачем ..., я далек от этого.
Ответить с цитированием
  #50 (permalink)  
Старый 23.11.2019, 04:49
Аватар для Блондинка
Профессор
Отправить личное сообщение для Блондинка Посмотреть профиль Найти все сообщения от Блондинка
 
Регистрация: 24.02.2019
Сообщений: 806

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>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Доработать и исправить скрипт Блондинка Общие вопросы Javascript 49 03.10.2019 10:03
Помогите доработать скрипт с редиректом Константин2211 Элементы интерфейса 6 26.02.2017 17:44
Помогите доработать скрипт mal4ishok Общие вопросы Javascript 2 20.10.2016 15:34
select - тег помогите доработать скрипт пожалуйста Svetik-top Элементы интерфейса 3 25.03.2015 18:12
Доработать скрипт volvon Работа 5 10.12.2010 20:27