Цитата:
|
Цитата:
|
Никто не знает?
Цитата:
|
Цитата:
<!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> |
Цитата:
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); } и вывести поздравление с католической пасхой? |
есть скрипт выводящий/скрывающий блок с поздравлениями...
<!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 дней) ? |
Часовой пояс GMT +3, время: 00:33. |