Показать сообщение отдельно
  #36 (permalink)  
Старый 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 дней) ?
Ответить с цитированием