Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
 Аватар для Блондинка йа
13 / 12 / 1
Регистрация: 08.03.2019
Сообщений: 279

Рассчитать даты религиозных праздников

05.10.2019, 08:22. Показов 3030. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нагуглила скрипт

PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
</head>
<body>
<div>
<form name="UserInput">
<input name="YearEntry" type="number" min="326" max="4099" step="1" value="2019"/> <input id="button1" name="button1" onclick="ShowEasters(UserInput.YearEntry.value)" type="button" value="Расcчитать" />
<script language="JavaScript" type="text/javascript">
var jDay = 0;
var jMonth = 0;
var oDay = 0;
var oMonth = 0;
var wDay = 0;
var wMonth = 0;
var year = 0;
if (parseFloat(navigator.appVersion) < 2)
alert ("You may need to upgrade your browser to reliably use the Easter Date calculator");
function ShowEasters(yr)
{
year = parseInt(yr, 10);
if (isNaN(year))
year = 0;
jDay = 0;
jMonth = 0;
oDay = 0;
oMonth = 0;
wDay = 0;
wMonth = 0;
if ((year <= 325) || (year > 4099))
alert("Выберите год с 326 до 4099");
else {
EasterJulian(); // used for all calculations
if ((year > 325) && (year <= 1582)) {
alert("Католическая Пасха " + year + ": "
+ GetMonth(jMonth) + " " + GetOrdinal(jDay)
+ " по юлианскому календарю ");
}
else {
EasterOrthodox (year, jDay, jMonth);
EasterWestern ();
if (year <= 1923) {
alert("Католическая Пасха " + year + ": "
+ GetMonth(wMonth) + " " + GetOrdinal(wDay)
+ ".nn"
+ "Православная Пасха " + year + ": "
+ GetMonth(oMonth) + " " + GetOrdinal(oDay)
+ "n(по григорианскому календарю), эта дата в юлианском календаре =n"
+ GetMonth(jMonth) + " " + GetOrdinal(jDay)
+ " по юлианскому календарюn(для регионов, использующих этот календарь в то время).");
}
else {
alert("Католическая Пасха " + year + ": "
+ GetMonth(wMonth) + " " + GetOrdinal(wDay) + ".nn"
+ "Православная Пасха " + year + ": "
+ GetMonth(oMonth) + " " + GetOrdinal(oDay) + ",n"
+ "эта дата в юлианском календаре =n"
+ GetMonth(jMonth) + " " + GetOrdinal(jDay)
+ " (по старому стилю).");
}
}
}
}
function IntDiv (num, dvsr)
{
var negate = false;
var result = 0;
if (dvsr == 0)
return null;
else {
if (num * dvsr < 0 )
negate = true;
if (num < 0)
num = -num;
if (dvsr < 0)
dvsr = -dvsr;
result = ((num - (num % dvsr)) / dvsr);
if (negate)
return -result;
else
return result;
}
}
function GetMonth(m)
{ if (m==3)
return ("Март,");
if (m==4)
return ("Апрель,");
if (m==5)
return ("Май,");
}
function GetOrdinal(d)
{
var rmdr = 0;
rmdr = d % 10;
if (((d >= 4) && (d <= 20)) || (rmdr == 0) || (rmdr > 3))
return (d + " число");
else {
if (rmdr==1)
return (d + " число");
if (rmdr==2)
return (d + " число");
if (rmdr==3)
return (d + " число");
}
}
function EasterJulian()
{
var g = 0;
var i = 0;
var j = 0;
var p = 0;
g = year % 19;
i = (19 * g + 15) % 30;
j = (year + IntDiv(year, 4) + i) % 7;
p = i - j + 28;
jDay = p;
jMonth = 4;
if (p > 31)
jDay = p - 31;
else
jMonth = 3;
}
function EasterWestern()
{
var g = 0;
var c = 0;
var h = 0;
var i = 0;
var j = 0;
var p = 0;
g = year % 19;
c = IntDiv(year, 100);
h = (c - IntDiv(c, 4) - IntDiv(8 * c + 13, 25) + 19 * g + 15) % 30;
i = h - IntDiv(h, 28) * (1 - IntDiv(h, 28)
* IntDiv(29, h + 1) * IntDiv(21 - g, 11));
j = (year + IntDiv(year, 4) + i + 2 - c + IntDiv(c, 4)) % 7;
p = i - j + 28;
wDay = p;
wMonth = 4;
if (p > 31)
wDay = p - 31;
else
wMonth = 3;
}
function EasterOrthodox (yr, jDay, jMonth)
{
var extra = 0;
var tmp = 0;
oDay = 0;
oMonth = 0;
if ((yr > 1582) && (yr <= 4099)) {
extra = 10;
if (yr > 1600) {
tmp = IntDiv(yr, 100) - 16;
extra = extra + tmp - IntDiv(tmp, 4);
}
oDay = jDay + extra;
oMonth = jMonth; if ((oMonth == 3) && (oDay > 31)) { oMonth = 4; oDay = oDay - 31; } if ((oMonth == 4) && (oDay > 30)) { oMonth = 5; oDay = oDay - 30; } } }
</script>
</form>
 
</div>
<div>
Католическая пасха<br>
Воскресенье<br>
21 апреля 2019 г. 
</div>
<div>
Православная пасха<br>
Воскресенье<br>
28 апреля 2019 г.
</div>
<div>
Радуница<br>
Вторник<br>
7 мая 2019 г.
</div>
</body>
</html>
вроде бы считает правильно, кто поможет исправить?
надо чтобы результаты расчётов выводились не в всплывающем окне а в дивах, удалить дату по старому стилю, и добавить дату 'радовницы (плюс 9 дней к православной пасхе), выводить в формате, день недели, число, 1px месяц, год, (для примера вывела текстом внизу) вставить текущий год в роде ввода.. .

Кто поможет?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.10.2019, 08:22
Ответы с готовыми решениями:

Как доработать js для вывода будущей даты с учетом выходных и праздников
Добрый день! У меня есть задача расчета и вывода на странице даты выполнения определенного этапа, период фиксированный. Я использую:...

Подсчет даты с учетом праздников и выходных
Помогите пожалуйста с подсчетом дат. Есть таблица Календарь с проставленными выходными и праздниками. Есть форма с полями: Начальная...

Насколько фанатизм распространен среди религиозных людей и атеистов
Эта тема возникла из-за следующего анекдота: Здесь речь идет не об сосуществованиих науки и религии, как о таковых, а именно о том,...

23
 Аватар для Блондинка йа
13 / 12 / 1
Регистрация: 08.03.2019
Сообщений: 279
06.10.2019, 10:35  [ТС]
Вот так приблизительно должно всё работать,

кто нибудь объясните почему не отображается дивы после расчётов? я ведь везде в document.write добавила в дивы...
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<style>
div, div.box { width: 720px; border: 1px solid #a9a9a9; border-radius: 7px/5px; padding: 5px; margin-bottom: 3px; }
</style>
</head>
<body>
<form name="UserInput">
<div>
<input id="pascha_year" name="YearEntry" type="number" min="326" max="4099" step="1" value="2019"/> <input id="button1" name="button1" onclick="ShowEasters(UserInput.YearEntry.value)" type="button" value="Расcчитать">
</div>
<script>
var jDay = 0;
var jMonth = 0;
var oDay = 0;
var oMonth = 0;
var wDay = 0;
var wMonth = 0;
var year = 0;
if (parseFloat(navigator.appVersion) < 2)
alert ("You may need to upgrade your browser to reliably use the Easter Date calculator");
function ShowEasters(yr)
{
year = parseInt(yr, 10);
if (isNaN(year))
year = 0;
jDay = 0;
jMonth = 0;
oDay = 0;
oMonth = 0;
wDay = 0;
wMonth = 0;
if ((year <= 325) || (year > 4099))
document.write("Выберите год с 326 до 4099");
else {
EasterJulian();
if ((year > 325) && (year <= 1582)) {
document.write("<div class='box'><input id='pascha_year' name='YearEntry' type='number' min='326' max='4099' step='1' value='2019'/> <input id='button1' name='button1' onclick='ShowEasters(UserInput.YearEntry.value)' type='button' value='Расcчитать'></div>" + "<div class='box'>Католическая пасха:<br>" + (jDay) + " " + GetMonth(jMonth) + " " + year + " г. (по старому стилю.)</div>"); }
 
else {
EasterOrthodox (year, jDay, jMonth);
EasterWestern ();
if (year <= 1923) {
document.write("<div class='box'><input id='pascha_year' name='YearEntry' type='number' min='326' max='4099' step='1' value='2019'/> <input id='button1' name='button1' onclick='ShowEasters(UserInput.YearEntry.value)' type='button' value='Расcчитать'></div>" + "<div class='box'>Католическая пасха:<br>" + (wDay) + " " + GetMonth(wMonth) + " " + year + " г.</div>" + "<div class='box'>Православная пасха:<br>" + (oDay) + " " + GetMonth(oMonth) + " " + year + " г.<br>" + (jDay) + " " + GetMonth(jMonth) + " " + year  + " г. (по старому стилю.)</div>");
}
else { document.write("<div class='box'><input id='pascha_year' name='YearEntry' type='number' min='326' max='4099' step='1' value='2019'/> <input id='button1' name='button1' onclick='ShowEasters(UserInput.YearEntry.value)' type='button' value='Расcчитать'></div>" + "<div class='box'>Католическая пасха:<br>" + (wDay) + " " + GetMonth(wMonth) + " " + year + " г.</div>" + "<div class='box'>Православная пасха:<br>" + (oDay) + " " + GetMonth(oMonth) + " " + year + " г.<br>" + (jDay) + " " + GetMonth(jMonth) + " " + year + " г. (по старому стилю).</div>");
}
}
}
}
function IntDiv (num, dvsr)
{
var negate = false;
var result = 0;
if (dvsr == 0)
return null;
else {
if (num * dvsr < 0 )
negate = true;
if (num < 0)
num = -num;
if (dvsr < 0)
dvsr = -dvsr;
result = ((num - (num % dvsr)) / dvsr);
if (negate)
return -result;
else
return result;
}
}
function GetMonth(m)
{ if (m==3)
return ("марта");
if (m==4)
return ("апреля");
if (m==5)
return ("мая");
}
function GetOrdinal(d)
{
var rmdr = 0;
rmdr = d % 10;
if (((d >= 4) && (d <= 20)) || (rmdr == 0) || (rmdr > 3))
return (d + " число");
else {
if (rmdr==1)
return (d + " число");
if (rmdr==2)
return (d + " число");
if (rmdr==3)
return (d + " число");
}
}
function EasterJulian()
{
var g = 0;
var i = 0;
var j = 0;
var p = 0;
g = year % 19;
i = (19 * g + 15) % 30;
j = (year + IntDiv(year, 4) + i) % 7;
p = i - j + 28;
jDay = p;
jMonth = 4;
if (p > 31)
jDay = p - 31;
else
jMonth = 3;
}
function EasterWestern()
{
var g = 0;
var c = 0;
var h = 0;
var i = 0;
var j = 0;
var p = 0;
g = year % 19;
c = IntDiv(year, 100);
h = (c - IntDiv(c, 4) - IntDiv(8 * c + 13, 25) + 19 * g + 15) % 30;
i = h - IntDiv(h, 28) * (1 - IntDiv(h, 28)
* IntDiv(29, h + 1) * IntDiv(21 - g, 11));
j = (year + IntDiv(year, 4) + i + 2 - c + IntDiv(c, 4)) % 7;
p = i - j + 28;
wDay = p;
wMonth = 4;
if (p > 31)
wDay = p - 31;
else
wMonth = 3;
}
function EasterOrthodox (yr, jDay, jMonth)
{
var extra = 0;
var tmp = 0;
oDay = 0;
oMonth = 0;
if ((yr > 1582) && (yr <= 4099)) {
extra = 10;
if (yr > 1600) {
tmp = IntDiv(yr, 100) - 16;
extra = extra + tmp - IntDiv(tmp, 4);
}
oDay = jDay + extra;
oMonth = jMonth; if ((oMonth == 3) && (oDay > 31)) { oMonth = 4; oDay = oDay - 31; } if ((oMonth == 4) && (oDay > 30)) { oMonth = 5; oDay = oDay - 30; } } }
</script>
</form>
</body>
</html>
И как сделать чтобы при первоначальной загрузке страницы уже отображались дивы с информацией на текущий год.

Добавлено через 3 минуты
P. S. И как вставить в поле ввода текущий год.
0
 Аватар для Блондинка йа
13 / 12 / 1
Регистрация: 08.03.2019
Сообщений: 279
07.10.2019, 14:15  [ТС]
Никто не знает?

Добавлено через 5 часов 45 минут
U p

Добавлено через 21 минуту
Как объединить оба скрипта в один?
Как вывести на страницу даты из 59 строки, чтобы они появлялись не после клика на кнопку а при загрузке страницы?

PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<style>
div, div.box { width: 720px; border: 1px solid #a9a9a9; border-radius: 7px/5px; padding: 5px; margin-bottom: 3px; }
input { display: inline-block; text-align: center; border: 1px solid #a9a9a9; }
</style>
</head>
<body>
<form name="UserInput">
<div>
<input id="pascha_year" name="YearEntry" type="number" min="326" max="4099" step="1" value=""/> <input id="button1" name="button1" onclick="ShowEasters(UserInput.YearEntry.value)" type="button" value="Расcчитать">
</div>
<div>
</div>
<div>
</div>
<script> 
document.addEventListener('DOMContentLoaded', function() { 
    var d = new Date(); 
    document.querySelector('#pascha_year').value = d.getFullYear();
}); 
</script>
<script>
var jDay = 0;
var jMonth = 0;
var oDay = 0;
var oMonth = 0;
var wDay = 0;
var wMonth = 0;
var year = 0;
if (parseFloat(navigator.appVersion) < 2)
alert ("You may need to upgrade your browser to reliably use the Easter Date calculator");
function ShowEasters(yr)
{
year = parseInt(yr, 10);
if (isNaN(year))
year = 0;
jDay = 0;
jMonth = 0;
oDay = 0;
oMonth = 0;
wDay = 0;
wMonth = 0;
if ((year <= 325) || (year > 4099))
document.write("Выберите год с 326 до 4099");
else {
EasterJulian();
if ((year > 325) && (year <= 1582)) {
document.write("<div class='box'><input id='pascha_year' name='YearEntry' type='number' min='326' max='4099' step='1' value=''/> <input id='button1' name='button1' onclick='ShowEasters(UserInput.YearEntry.value)' type='button' value='Расcчитать'></div>" + "<div class='box'>Пасха:<br>" + (jDay) + " " + GetMonth(jMonth) + " " + year + " г. (по старому стилю.)</div>"); }
 
else {
EasterOrthodox (year, jDay, jMonth);
EasterWestern ();
if (year <= 1923) {
document.write("<div class='box'><input id='pascha_year' name='YearEntry' type='number' min='326' max='4099' step='1' value=''/> <input id='button1' name='button1' onclick='ShowEasters(UserInput.YearEntry.value)' type='button' value='Расcчитать'></div>" + "<div class='box'>Католическая пасха:<br>" + (wDay) + " " + GetMonth(wMonth) + " " + year + " г.</div>" + "<div class='box'>Православная пасха:<br>" + (oDay) + " " + GetMonth(oMonth) + " " + year + " г.<br>" + (jDay) + " " + GetMonth(jMonth) + " " + year  + " г. (по старому стилю.)</div>");
}
else { document.write("<div class='box'><input id='pascha_year' name='YearEntry' type='number' min='326' max='4099' step='1' value=''/> <input id='button1' name='button1' onclick='ShowEasters(UserInput.YearEntry.value)' type='button' value='Расcчитать'></div>" + "<div class='box'>Католическая пасха:<br>" + (wDay) + " " + GetMonth(wMonth) + " " + year + " г.</div>" + "<div class='box'>Православная пасха:<br>" + (oDay) + " " + GetMonth(oMonth) + " " + year + " г.<br>" + (jDay) + " " + GetMonth(jMonth) + " " + year + " г. (по старому стилю).</div>");
}
}
}
}
function IntDiv (num, dvsr)
{
var negate = false;
var result = 0;
if (dvsr == 0)
return null;
else {
if (num * dvsr < 0 )
negate = true;
if (num < 0)
num = -num;
if (dvsr < 0)
dvsr = -dvsr;
result = ((num - (num % dvsr)) / dvsr);
if (negate)
return -result;
else
return result;
}
}
function GetMonth(m)
{ if (m==3)
return ("марта");
if (m==4)
return ("апреля");
if (m==5)
return ("мая");
}
function GetOrdinal(d)
{
var rmdr = 0;
rmdr = d % 10;
if (((d >= 4) && (d <= 20)) || (rmdr == 0) || (rmdr > 3))
return (d + " число");
else {
if (rmdr==1)
return (d + " число");
if (rmdr==2)
return (d + " число");
if (rmdr==3)
return (d + " число");
}
}
function EasterJulian()
{
var g = 0;
var i = 0;
var j = 0;
var p = 0;
g = year % 19;
i = (19 * g + 15) % 30;
j = (year + IntDiv(year, 4) + i) % 7;
p = i - j + 28;
jDay = p;
jMonth = 4;
if (p > 31)
jDay = p - 31;
else
jMonth = 3;
}
function EasterWestern()
{
var g = 0;
var c = 0;
var h = 0;
var i = 0;
var j = 0;
var p = 0;
g = year % 19;
c = IntDiv(year, 100);
h = (c - IntDiv(c, 4) - IntDiv(8 * c + 13, 25) + 19 * g + 15) % 30;
i = h - IntDiv(h, 28) * (1 - IntDiv(h, 28)
* IntDiv(29, h + 1) * IntDiv(21 - g, 11));
j = (year + IntDiv(year, 4) + i + 2 - c + IntDiv(c, 4)) % 7;
p = i - j + 28;
wDay = p;
wMonth = 4;
if (p > 31)
wDay = p - 31;
else
wMonth = 3;
}
function EasterOrthodox (yr, jDay, jMonth)
{
var extra = 0;
var tmp = 0;
oDay = 0;
oMonth = 0;
if ((yr > 1582) && (yr <= 4099)) {
extra = 10;
if (yr > 1600) {
tmp = IntDiv(yr, 100) - 16;
extra = extra + tmp - IntDiv(tmp, 4);
}
oDay = jDay + extra;
oMonth = jMonth; if ((oMonth == 3) && (oDay > 31)) { oMonth = 4; oDay = oDay - 31; } if ((oMonth == 4) && (oDay > 30)) { oMonth = 5; oDay = oDay - 30; } } }
</script>
</form>
</body>
</html>
0
380 / 230 / 115
Регистрация: 22.11.2016
Сообщений: 379
07.10.2019, 23:48
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="utf-8">
    <script type="text/javascript">
        window.onload = function() {
            ShowEasters(document.getElementById('yearEntry').value);
        }
    </script>
</head>
<body>
    <div>
        <form name="UserInput">
            <input id="yearEntry" name="YearEntry" type="number" min="326" max="4099" step="1" value="2019"> 
            <input id="button1" name="button1" onclick="ShowEasters(UserInput.YearEntry.value)" type="button" value="Расcчитать">
        </form>
    </div>
    <div id="information">
        
    </div>
    <script language="JavaScript" type="text/javascript">
        var jDay = 0;
        var jMonth = 0;
        var oDay = 0;
        var oMonth = 0;
        var wDay = 0;
        var wMonth = 0;
        var year = 0;
        if(parseFloat(navigator.appVersion) < 2) alert("You may need to upgrade your browser to reliably use the Easter Date calculator");
        function ShowEasters(yr) {
            year = parseInt(yr, 10);
            if(isNaN(year))
                year = 0;
                jDay = 0;
                jMonth = 0;
                oDay = 0;
                oMonth = 0;
                wDay = 0;
                wMonth = 0;
 
            if(year <= 325 || year > 4099) alert("Выберите год с 326 до 4099");
            else {
                EasterJulian(); // used for all calculations
                if(year > 325 && year <= 1582) {
                    document.getElementById('information').innerHTML = "<div>Католическая Пасха " 
                    + dateR(year, GetMonth(jMonth), GetOrdinal(jDay));
                } else {
                    EasterOrthodox(year, jDay, jMonth);
                    EasterWestern();
                    if(year <= 1923) {
                        document.getElementById('information').innerHTML = "<div>Католическая Пасха " 
                        + dateR(year, GetMonth(wMonth), GetOrdinal(wDay))
                        + "<div>Православная Пасха " 
                        + dateR(year, GetMonth(oMonth), GetOrdinal(oDay))
                        // + " (по григорианскому календарю), эта дата в юлианском календаре "
                        // + GetMonth(jMonth) + " " + GetOrdinal(jDay)
                        // + " по юлианскому календарюn(для регионов, использующих этот календарь в то время).";
                    } else {
                        document.getElementById('information').innerHTML = "<div>Католическая Пасха " 
                        + dateR(year, GetMonth(wMonth), GetOrdinal(wDay))
                        + "<div>Православная Пасха " 
                        + dateR(year, GetMonth(oMonth), GetOrdinal(oDay));
                    }
                }
            }
        }
        function IntDiv(num, dvsr) {
            var negate = false;
            var result = 0;
            if(dvsr == 0) return null;
            else {
                if(num * dvsr < 0 ) negate = true;
                if(num < 0) num = -num;
                if(dvsr < 0) dvsr = -dvsr;
                result = ((num - (num % dvsr)) / dvsr);
                if(negate) return -result;
                else return result;
            }
        }
        function GetMonth(m) { 
            if(m == 3) return 2;
            if(m == 4) return 3;
            if(m == 5) return 4;
        }
        function GetOrdinal(d) {
            var rmdr = 0;
            rmdr = d % 10;
            if(d >= 4 && d <= 20 || rmdr == 0 || rmdr > 3) return d;
            else {
                if(rmdr == 1) return d;
                if(rmdr == 2) return d;
                if(rmdr == 3) return d;
            }
        }
        function EasterJulian() {
            var g = 0;
            var i = 0;
            var j = 0;
            var p = 0;
            g = year % 19;
            i = (19 * g + 15) % 30;
            j = (year + IntDiv(year, 4) + i) % 7;
            p = i - j + 28;
            jDay = p;
            jMonth = 4;
            if(p > 31) jDay = p - 31;
            else jMonth = 3;
        }
        function EasterWestern() {
            var g = 0;
            var c = 0;
            var h = 0;
            var i = 0;
            var j = 0;
            var p = 0;
            g = year % 19;
            c = IntDiv(year, 100);
            h = (c - IntDiv(c, 4) - IntDiv(8 * c + 13, 25) + 19 * g + 15) % 30;
            i = h - IntDiv(h, 28) * (1 - IntDiv(h, 28)
            * IntDiv(29, h + 1) * IntDiv(21 - g, 11));
            j = (year + IntDiv(year, 4) + i + 2 - c + IntDiv(c, 4)) % 7;
            p = i - j + 28;
            wDay = p;
            wMonth = 4;
            if(p > 31) wDay = p - 31;
            else wMonth = 3;
        }
        function EasterOrthodox (yr, jDay, jMonth) {
            var extra = 0;
            var tmp = 0;
            oDay = 0;
            oMonth = 0;
            if(yr > 1582 && yr <= 4099) {
                extra = 10;
                if(yr > 1600) {
                    tmp = IntDiv(yr, 100) - 16;
                    extra = extra + tmp - IntDiv(tmp, 4);
                }
                oDay = jDay + extra;
                oMonth = jMonth; 
                if(oMonth == 3 && oDay > 31) { 
                    oMonth = 4;
                    oDay = oDay - 31; 
                } 
                if(oMonth == 4 && oDay > 30) { 
                    oMonth = 5; oDay = oDay - 30;
                } 
            } 
        }
 
        function dateR(parYear, parMonth, parDate) {
            var copyDate = new Date(parYear, parMonth, parDate);
 
            var dayOfTheWeek = copyDate.getDay();
            var date = (copyDate.getDate() < 10) ? "0" + copyDate.getDate() : copyDate.getDate();
            var month = copyDate.getMonth();
            var year = copyDate.getFullYear();
 
            if(dayOfTheWeek == 0) dayOfTheWeek = "Воскресенье";
            else if(dayOfTheWeek == 1) dayOfTheWeek = "Понедельник";
            else if(dayOfTheWeek == 2) dayOfTheWeek = "Вторник";
            else if(dayOfTheWeek == 3) dayOfTheWeek = "Среда";
            else if(dayOfTheWeek == 4) dayOfTheWeek = "Четверг";
            else if(dayOfTheWeek == 5) dayOfTheWeek = "Пятница";
            else if(dayOfTheWeek == 6) dayOfTheWeek = "Суббота";
 
            if(month == 0) month = "Января";
            else if(month == 1) month = "Февраля";
            else if(month == 2) month = "Марта";
            else if(month == 3) month = "Апреля";
            else if(month == 4) month = "Мая";
            else if(month == 5) month = "Июня";
            else if(month == 6) month = "Июля";
            else if(month == 7) month = "Августа";
            else if(month == 8) month = "Сентября";
            else if(month == 9) month = "Октября";
            else if(month == 10) month = "Ноября";
            else if(month == 11) month = "Декабря";
 
            return "<div>" + dayOfTheWeek 
                + "<div>" + date + " " + month + " " + year + " г.";
        }
    </script>
</body>
</html>
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
08.10.2019, 16:28
Здравствуйте.
Оставлю здесь работающий пример.
Может, кому и понадобится расчет Пасхи по алгоритму из Википедии. Именно из Википедии.
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
</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 />
        Воскресенье<br />
        <span id="catholic"></span>
    </div>
    <div>
        Православная пасха<br />
        Воскресенье<br>
        <span id="orthodox"></span>
    </div>
    <div>
        Радуница<br />
        Вторник<br />
        <span id="rad"></span>
    </div>
    <script>
        function catholicDate(year) {
            // https://ru.wikipedia.org/wiki/Алгоритм_Гаусса_вычисления_даты_Пасхи
            // Пример на 1777 год (год рождения Карла Гаусса): год = 1777 
            // a = год mod 19      a = 10 
            let a = year % 19;
            // b = год mod 4       b = 1 
            let b = year % 4;
            // c = год mod 7       c = 6 
            let c = year % 7;
            // k = целая часть (год/100)           k = 17 
            let k = Math.floor(year / 100);
            // p = целая часть ((13 + 8k)/25)      p = 5 
            let p = Math.floor((13 + 8 * k) / 25);
            // q = целая часть (k/4)               q = 4 
            let q = Math.floor(k / 4);
            // M = (15 − p + k − q) mod 30         M = 23 
            let m = (15 - p + k - q) % 30;
            // N = (4 + k − q) mod 7               N = 3 
            let n = (4 + k - q) % 7;
            // d = (19a + M) mod 30                d = 3 
            let d = (19 * a + m) % 30;
            // e = (2b + 4c + 6d + N) mod 7        e = 5 
            let 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.
            let a = year % 19;
            // Разделить номер года на 4 и определить остаток от деления b.
            let b = year % 4;
            // Разделить номер года на 7 и определить остаток от деления c.
            let c = year % 7;
            // Разделить сумму 19a + 15 на 30 и определить остаток d.
            let d = (19 * a + 15) % 30;
            // Разделить сумму 2b + 4c + 6d + 6 на 7 и определить остаток e.
            let e = (2 * b + 4 * c + 6 * d + 6) % 7;
            // Определить сумму f = d + e.
            let 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", { day: "numeric", month: "long", year: "numeric" });
        }
 
        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() {
            let year = document.getElementById("YearEntry").value;
            document.getElementById("catholic").textContent = formatDate(catholicDate(year));
            let date1 = orthodoxDate(year);
            document.getElementById("orthodox").textContent = formatDate(date1);
            let date2 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() + 9);
            document.getElementById("rad").textContent = formatDate(date2);
        }
    </script>
</body>
</html>
1
 Аватар для Блондинка йа
13 / 12 / 1
Регистрация: 08.03.2019
Сообщений: 279
09.10.2019, 09:02  [ТС]
amr-now,
твой скрипт не хочет у меня работать, видимо потому что установлена не последняя версия браузера Habbit Browser для android, возможно ли это исправить?

и такой вопрос, откуда вычитать/прибавлять дни, чтобы получить даты масленицы (-49 дней), вербного воскресенья (-7 дней), и радуницы (+9дней) от православной пасхи...
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
09.10.2019, 11:18
Цитата Сообщение от Блондинка йа Посмотреть сообщение
Habbit Browser для android, возможно ли это исправить?
Да. Яндекс-браузер. Работает всё (С)
https://coandroid.ru/501-yandeks-brauzer.html

Добавлено через 7 минут
---
Версия для Android 5, если телефон чуток поновее:
https://trashbox.ru/link/yandex-browser-android
0
 Аватар для Блондинка йа
13 / 12 / 1
Регистрация: 08.03.2019
Сообщений: 279
09.10.2019, 11:45  [ТС]
amr-now, мне открыть страницу в другом браузере не сложно, вопрос в другом, как заставить всех посетителей сайта сменить браузер...
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
09.10.2019, 12:39
Блондинка йа, если хотите скрипт в синтаксисе ES5 от 2011 года,
- замените все let на var
- если не поможет, то придется переписать функцию:
JavaScript
1
2
3
4
        // Три даты отображаем в едином формате
        function formatDate(date) {
            return date.toString();
        }
Добавлено через 2 минуты
- Я не знаю отсутствует ли событие DOMContentLoaded. Если отсутствует, то:
JavaScript
1
document.addEventListener("load", document_domcontentloaded);
Добавлено через 1 минуту
----
Вроде это всё. Я специально старался не использовать ничего из современных извращений, типа трёх точек.
0
 Аватар для Блондинка йа
13 / 12 / 1
Регистрация: 08.03.2019
Сообщений: 279
09.10.2019, 13:22  [ТС]
Заменила let на var, всё ок,

куда м как добавить дни чтоб получить даты масленицы и вербного воскресенья?
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
09.10.2019, 13:34
Цитата Сообщение от Блондинка йа Посмотреть сообщение
как добавить дни чтоб получить даты масленицы и вербного воскресенья?
Посмотрите внимательно на образец Радоницы:
JavaScript
1
2
            let date2 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() + 9);
            document.getElementById("rad").textContent = formatDate(date2);
Здесь прошло 9 дней после Пасхи.
0
 Аватар для Блондинка йа
13 / 12 / 1
Регистрация: 08.03.2019
Сообщений: 279
09.10.2019, 17:01  [ТС]
amr-now, благодарю, разобралась, всё работает amr-now,

Добавлено через 3 часа 2 минуты
amr-now, а не подскажешь как одновременно вывести по две даты для каждого события, по старому и новому стилю?
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
09.10.2019, 17:39
Цитата Сообщение от Блондинка йа Посмотреть сообщение
как одновременно вывести по две даты для каждого события, по старому и новому стилю?
Старый стиль на 13 дней меньше.
0
 Аватар для Блондинка йа
13 / 12 / 1
Регистрация: 08.03.2019
Сообщений: 279
09.10.2019, 19:16  [ТС]
13 дней с 1900 по 2100 год, раньше было и 12 и 11 и 10 дней...

Добавлено через 1 час 16 минут
amr-now, посмотри в той же википедии, в обоих статьях 'юлианский календарь'и 'григорианский календарь' приводится таблица с разницей между обоими календарями
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
09.10.2019, 19:49
Блондинка йа, задача какая? Изучить историю всех христианских религий с момента их возникновения?

Скрипт какую практическую цель решает?
Все религиозные праздники всех времен и народов тоже не поместятся на одной странице.
1
 Аватар для Блондинка йа
13 / 12 / 1
Регистрация: 08.03.2019
Сообщений: 279
10.10.2019, 05:52  [ТС]
amr-now, в принципе надо показать даты гос праздники РБ, но поскольку у нас получился калькулятор на большой период времени, даже на период до появления григорианского календаря, плюс есть люди/церкви/страны которые до сих пор пользуются старым календарём,

то цель показать три даты, католической пасхи христианской пасхи и радуницы по обоим стилям...

Добавлено через 23 минуты
P. S. по двум стилям с момента появления григорианского календаря, а именно с 15.10.1583 по новому стилю...
0
 Аватар для Блондинка йа
13 / 12 / 1
Регистрация: 08.03.2019
Сообщений: 279
12.10.2019, 08:49  [ТС]
amr-now, это вообще реально показать даты и по старому и по новому стилю при условии что дата равна или больше 15.10.1583 г.?
0
 Аватар для Блондинка йа
13 / 12 / 1
Регистрация: 08.03.2019
Сообщений: 279
17.11.2019, 04:51  [ТС]
amr-now, хоть из википедии алгоритм, но считает неправильно...
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<!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>
Если ввести год 1899 и меньше, или 2101 или больше...
0
 Аватар для Блондинка йа
13 / 12 / 1
Регистрация: 08.03.2019
Сообщений: 279
23.11.2019, 23:07  [ТС]
Как создать переменную?

Если год делится на 4 без остатка и кратен 100 переменная не изменяется, а если год кратный 100 и делится на 4 с остатком, переменная увеличивается на 1, с 1900 по 2099 г равна 13, с 2100 г равна 14, с 1800 по 1899 г. равна 12 и т.д.

Как это реализовать на js?
0
 Аватар для Блондинка йа
13 / 12 / 1
Регистрация: 08.03.2019
Сообщений: 279
02.12.2019, 22:51  [ТС]
Народ, помогите получить дату католической пасхи по старому стилю,

надо отнять razn от даты по новому стилю

что добавить после 185 строки?

PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
<!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; }
span.ulian { color: hsl(240,100%,70%); }
span.grig { color: hsl(240,100%,30%); }
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 class="grig">
<span id="Catholic_Easter_gr"></span><br>
по григорианскому календарю (новый стиль)<br>
</span>
<span class="ulian">
<span id="Catholic_Easter_ul"></span><br>
по юлианскому календарю (старый стиль)
</span>
</div>
<div>
Православная пасха<br>
<span class="grig">
<span id="Orthodox_Easter_gr"></span><br>
по григорианскому календарю (новый стиль)<br>
</span>
<span class="ulian">
<span id="Orthodox_Easter_ul"></span><br>
по юлианскому календарю (старый стиль)
</span>
</div>
<div>
Радуница<br>
<span class="grig">
<span id="Orthodox_Radunitsa_gr"></span><br>
по григорианскому календарю (новый стиль)<br>
</span>
<span class="ulian">
<span id="Orthodox_Radunitsa_ul"></span><br>
по юлианскому календарю (старый стиль)
</span>
</div>
<div>
Вербное воскресенье<br>
<span class="grig">
<span id="palm_Sunday_Orthodox_gr"></span><br>
по григорианскому календарю (новый стиль)<br>
</span>
<span class="ulian">
<span id="palm_Sunday_Orthodox_ul"></span><br>
по юлианскому календарю (старый стиль)
</span>
</div>
<div>
Масленица<br>
<span class="grig">
<span id="Maslenitsa_Orthodox_gr"></span><br>
по григорианскому календарю (новый стиль)<br>
</span>
<span class="ulian">
<span id="Maslenitsa_Orthodox_ul"></span><br>
по юлианскому календарю (старый стиль)
</span>
</div>
<div>
Первый Никейский собор — собор Церкви, созванный императором Константином I; состоялся в июне 325 года в городе Никее (ныне Изник, Турция); продолжался больше двух месяцев и стал первым Вселенским собором в истории христианства.
</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(){
    var Y = document.getElementById("YearEntry");
    
    Y.value = new Date().getFullYear();
    Y.addEventListener("input", function() {
        this.value = this.value.replace(/\D/, '')
    });
    
    document.getElementById("button1").onclick = button1_click;
    
    button1_click();
}
 
function button1_click() {
    var year = document.getElementById("YearEntry").value, 
        razn = 0; //какое-то значение по умолчанию если меньше 300 и больше 4099
 
    if (year >= 300 && year <= 499) razn = 1;
    else if (year >= 500 && year <= 599) razn = 2;
    else if (year >= 600 && year <= 699) razn = 3;
    else if (year >= 700 && year <= 899) razn = 4;
    else if (year >= 900 && year <= 999) razn = 5;
    else if (year >= 1000 && year <= 1099) razn = 6;
    else if (year >= 1100 && year <= 1299) razn = 7;
    else if (year >= 1300 && year <= 1399) razn = 8;
    else if (year >= 1400 && year <= 1499) razn = 9;
    else if (year >= 1500 && year <= 1699) razn = 10;
    else if (year >= 1700 && year <= 1799) razn = 11;
    else if (year >= 1800 && year <= 1899) razn = 12;
    else if (year >= 1900 && year <= 2099) razn = 13;
    else if (year >= 2100 && year <= 2199) razn = 14;
    else if (year >= 2200 && year <= 2299) razn = 15;
    else if (year >= 2300 && year <= 2399) razn = 16;
    else if (year >= 2500 && year <= 2599) razn = 17;
    else if (year >= 2600 && year <= 2699) razn = 18;
    else if (year >= 2700 && year <= 2899) razn = 19;
    else if (year >= 2900 && year <= 2999) razn = 20;
    else if (year >= 3000 && year <= 3099) razn = 21;
    else if (year >= 3100 && year <= 3299) razn = 22;
    else if (year >= 3300 && year <= 3399) razn = 23;
    else if (year >= 3400 && year <= 3499) razn = 24;
    else if (year >= 3500 && year <= 3699) razn = 25;
    else if (year >= 3700 && year <= 3799) razn = 26;
    else if (year >= 3800 && year <= 3899) razn = 27;
    else if (year >= 3900 && year <= 4099) razn = 28;
 
    document.getElementById("Catholic_Easter_gr").innerHTML = formatDate(catholicDate(year));
 
    var date1 = orthodoxDate(year); 
    document.getElementById("Orthodox_Easter_ul").innerHTML = formatDate(date1);
    
    var date1_1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() + razn); 
    document.getElementById("Orthodox_Easter_gr").innerHTML = formatDate(date1_1);
 
    var date2 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() + 9); 
    document.getElementById("Orthodox_Radunitsa_ul").innerHTML = formatDate(date2);
 
    var date2_1 = new Date(date1_1.getFullYear(), date1_1.getMonth(), date1_1.getDate() + 9); 
    document.getElementById("Orthodox_Radunitsa_gr").innerHTML = formatDate(date2_1);
 
    var date3 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() - 7); 
    document.getElementById("palm_Sunday_Orthodox_ul").innerHTML = formatDate(date3);
 
    var date3_1 = new Date(date1_1.getFullYear(), date1_1.getMonth(), date1_1.getDate() - 7); 
    document.getElementById("palm_Sunday_Orthodox_gr").innerHTML = formatDate(date3_1);
 
    var date4 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() - 49); 
    document.getElementById("Maslenitsa_Orthodox_ul").innerHTML = formatDate(date4);
 
    var date4_1 = new Date(date1_1.getFullYear(), date1_1.getMonth(), date1_1.getDate() - 49); 
    document.getElementById("Maslenitsa_Orthodox_gr").innerHTML = formatDate(date4_1);
}
</script>
</body>
</html>
Добавлено через 1 час 53 минуты
никто не знает?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.12.2019, 22:51
Помогаю со студенческими работами здесь

Выделение праздников в календаре
Как реализовать вот это: Таблицы,отражающих студенческий календарь(текущая неделя в семестре; числитель,знаменатель), количество дней...

Список Всех Праздников
Где то вроде видел здесь эту тему или что то похожее, но немогу найти :angry: Есть задача, посчитать количество минут между рабочими...

Сколько праздников в календаре «айтишников»?
Хоть и говорится, что праздность – мать всех пороков, но все-таки жаждет душа человеческая праздника. Душа IT-специалиста – не исключение!...

Схема данных: персонал, участвующий в организации праздников
В приложенном ZIP положена схема и описание к ней. Помогите организовать связь персонала участвующего в организации праздника...

Где можно взять данные дат праздников?
Мне необходимо создать таблицу условного календаря, где я помечаю статус даты. Например : Year | Month | day | IsWorkOrDayOff...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru