28.03.2019, 09:27
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,795
|
|
Сообщение от Блондинка
|
надо что то простое, без вопросов-ответов посетителям о разрешении использования их геолокации, и в тоже время достаточно точное и надёжное.
|
Тут только волшебство вам поможет.
|
|
28.03.2019, 10:12
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Блондинка
|
это не важно, вряд-ли или нет
|
А я разве возражал? Я бы не стал тащить на клиента пиво и национальные кухни, предварительно не узнав будет ли вообще сегодня международный пикничок. А как вы хотите поступать, это уже ваше право.
|
|
17.11.2019, 01:37
|
|
Профессор
|
|
Регистрация: 24.02.2019
Сообщений: 806
|
|
Никто не знает?
Сообщение от Malleys
|
Да, возможно. Например, вычисление дня пасхи Пасхалия
Вот я попробовал...
<h4>Православная пасха</h4>
<input id="input" type="number" value="2019">
<output id="output"></output>
<script>
function psh(Y){
var a = (19 * (Y % 19) + 15) % 30;
var b = (2 * (Y % 4) + 4 * (Y % 7) + 6 * a + 6) % 7;
if(a + b > 26)
return (a + b - 26) + " мая " + Y;
else
return (a + b + 4) + " апреля " + Y;
}
(input.oninput = function() {
output.textContent = psh(+input.value);
})();
</script>
|
Как и куда вставить, getDay, чтобы показало и день недели ?
|
|
30.04.2021, 17:39
|
|
Профессор
|
|
Регистрация: 24.02.2019
Сообщений: 806
|
|
Сообщение от laimas
|
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<style>
.holiday {
text-align: center;
}
</style>
</head>
<body>
<script type="text/javascript">
var holidays = {
'3': {
'8': {'start': 8, 'duration': 12, 'compliments': '<img src="https://s0.tchkcdn.com/g-lScF7M4CSF9uPeXq54QRNw/4/22014/640x640/w/0/792c2e17f080c8b4461a3467a34bdf9e_398733855.jpg">'},
'9': {'start': 12, 'duration': 2, 'compliments': 'Поздравление с Днем счастливых!'}
}
}, d = new Date(), m;
if((m = holidays[d.getMonth()+1]) && m[d.getDate()]) {
//можно записывать в сессионное хранилище условие (метку окончания показа)
//и проверяя ее в ней, если она есть, сразу отображаем поздравление и запускаем таймер окончания
//в противном случае запускаем таймер сканирующий время на соответствие началу старта поздравления
//и при этом событии пишем метку окончания в сессию
//конечное сравнение для старта, это
m = m[d.getDate()];
if(d.getHours()>=m.start) {
var b = document.createElement('div');
b.className = 'holiday';
b.innerHTML = m.compliments;
document.querySelector('body').appendChild(b)
}
}
</script>
</body>
</html>
|
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<style>
.holiday {
text-align: center;
}
</style>
</head>
<body>
<script type="text/javascript">
var holidays = {
'3': {
'8': {'start': 8, 'duration': 12, 'compliments': 'С 8 марта !'},
'9': {'start': 12, 'duration': 2, 'compliments': 'Поздравление с Днем счастливых!'}
},
'4': {
'11': {'start': 8, 'duration': 12, 'compliments': 'С днём космонавтики !'},
'30': {'start': 12, 'duration': 2, 'compliments': 'с 30 апреля! '
}
},
'5': {
'1': {'start': 8, 'duration': 12, 'compliments': 'С 1 мая !'},
'9': {'start': 12, 'duration': 2, 'compliments': 'С 9 мая !'
}
}
},
d = new Date(), m;
if((m = holidays[d.getMonth()+1]) && m[d.getDate()]) {
//можно записывать в сессионное хранилище условие (метку окончания показа)
//и проверяя ее в ней, если она есть, сразу отображаем поздравление и запускаем таймер окончания
//в противном случае запускаем таймер сканирующий время на соответствие началу старта поздравления
//и при этом событии пишем метку окончания в сессию
//конечное сравнение для старта, это
m = m[d.getDate()];
if(d.getHours()>=m.start) {
var b = document.createElement('div');
b.className = 'holiday';
b.innerHTML = m.compliments;
document.querySelector('body').appendChild(b)
}
}
</script>
</body>
</html>
|
|
30.04.2021, 17:56
|
|
Профессор
|
|
Регистрация: 24.02.2019
Сообщений: 806
|
|
Сообщение от Malleys
|
Да, возможно. Например, вычисление дня пасхи Пасхалия
Вот я попробовал...
<h4>Православная пасха</h4>
<input id="input" type="number" value="2019">
<output id="output"></output>
<script>
function psh(Y){
var a = (19 * (Y % 19) + 15) % 30;
var b = (2 * (Y % 4) + 4 * (Y % 7) + 6 * a + 6) % 7;
if(a + b > 26)
return (a + b - 26) + " мая " + Y;
else
return (a + b + 4) + " апреля " + Y;
}
(input.oninput = function() {
output.textContent = psh(+input.value);
})();
</script>
|
как из этого скрипта добавить функцию
function psh(Y){
var a = (19 * (Y % 19) + 15) % 30;
var b = (2 * (Y % 4) + 4 * (Y % 7) + 6 * a + 6) % 7;
if(a + b > 26)
return (a + b - 26) + " мая " + Y;
else
return (a + b + 4) + " апреля " + Y;
}
и вывести поздравление с пасхой, и радуницей(+9 дней)
и эту функцию
function catholicDate(year) {
// [url]https://ru.wikipedia.org/wiki/Алгоритм_Гаусса_вычисления_даты_Пасхи[/url]
var a = year % 19,
b = year % 4,
c = year % 7,
k = Math.floor(year / 100),
p = Math.floor((13 + 8 * k) / 25),
q = Math.floor(k / 4),
m = (15 - p + k - q) % 30,
n = (4 + k - q) % 7,
d = (19 * a + m) % 30,
e = (2 * b + 4 * c + 6 * d + n) % 7;
if (d === 29 && e === 6) return new Date(year, 3, 19);
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);
}
и вывести поздравление с католической пасхой?
|
|
30.04.2021, 21:07
|
|
Профессор
|
|
Регистрация: 24.02.2019
Сообщений: 806
|
|
есть скрипт выводящий/скрывающий блок с поздравлениями...
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<style>
div.holiday { background-color: #ececec; text-align: center; border: 1px solid #999; padding: 20px; color: #f00; font: bold 24px serif; }
</style>
</head>
<body>
<div id="holigay"></div>
<script type="text/javascript">
var holidays = {
'3': {
'8': {'start': 8, 'duration': 12, 'compliments': 'С 8 марта !'},
'9': {'start': 12, 'duration': 2, 'compliments': 'Поздравление с Днем счастливых!'}
},
'4': {
'11': {'start': 8, 'duration': 12, 'compliments': 'С днём космонавтики !'},
'30': {'start': 12, 'duration': 2, 'compliments': 'с 30 апреля! '
}
},
'5': {
'1': {'start': 8, 'duration': 12, 'compliments': 'С 1 мая !'},
'9': {'start': 12, 'duration': 2, 'compliments': 'С 9 мая !'
}
}
},
d = new Date(), m;
if((m = holidays[d.getMonth()+1]) && m[d.getDate()]) {
m = m[d.getDate()];
if(d.getHours()>=m.start) {
var b = document.createElement('div');
b.className = 'holiday';
b.innerHTML = m.compliments;
document.querySelector('body').appendChild(b)
}
}
</script>
</body>
</html>
в нем фиксированные даты, вопрос как вывести поздравления с праздниками, даты которых меняются каждый год?
есть две функции для расчёта пасхи православной и католической
function orthodoxDate(year) {
var a = year % 19;
var b = year % 4;
var c = year % 7;
var d = (19 * a + 15) % 30;
var e = (2 * b + 4 * c + 6 * d + 6) % 7;
var f = d + e;
return f <= 26
? new Date(year, 3, 4 + f)
: new Date(year, 4, f - 26);
}
function catholicDate(year) {
var a = year % 19;
var b = year % 4;
var c = year % 7;
var k = Math.floor(year / 100);
var p = Math.floor((13 + 8 * k) / 25);
var q = Math.floor(k / 4);
var m = (15 - p + k - q) % 30;
var n = (4 + k - q) % 7;
var d = (19 * a + m) % 30;
var e = (2 * b + 4 * c + 6 * d + n) % 7;
if (d === 29 && e === 6)
return new Date(year, 3, 19);
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);
}
как в скрипт добавить эти функции, чтобы блок появлялся в эти даты пасхи православной католической, православной радуницей(+9 дней) и православной троицей(+49 дней) ?
|
|
|
|