• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Профессиональные И Просто Праздники

dimat

Well-known member
31.07.2008
508
0
BIT
0
Всем привет!

Задача в следущем: необходимо определить какие праздники отмечаются на указанную дату.
Все бы ничего(делаем и заполняем справочник с датой и названием праздника), но некоторые праздники не привязаны к конкретной дате, например - День строителя отмечается во второе воскресенье августа.

Наверняка кто то делал подобное, подскажите как это сделать?
 
N

nvyush

Для начала определиться, как хранить подобную информацию в справочнике. Во-первых, нужен признак, праздник привязан к дате или к дню недели. Далее, если праздник не привязан к дате, нужно хранить информацию о дне недели, номере дня недели и признак откуда считать — с начала или с конца месяца. Ну а потом заполнять календарь праздников на год, вычисляя, на какие даты приходятся праздники.
 
N

nvyush

Допустим, отсчёт ведётся с начала месяца, нам нужно воскресенье второй недели. Если месяц начинается с понедельника, мы должны добавить к дате понедельника 13 дней, если со вторника — 12 дней и т.д. Для вычисления необходимого сдвига определяем день недели первого дня месяца и вычитаем из 14. Для последнего/предпоследнего воскресенья с конца месяца аналогично пляшем от даты последнего дня месяца. Как-то так.
 

dimat

Well-known member
31.07.2008
508
0
BIT
0
Допустим, отсчёт ведётся с начала месяца, нам нужно воскресенье второй недели. Если месяц начинается с понедельника, мы должны добавить к дате понедельника 13 дней, если со вторника — 12 дней и т.д. Для вычисления необходимого сдвига определяем день недели первого дня месяца и вычитаем из 14. Для последнего/предпоследнего воскресенья с конца месяца аналогично пляшем от даты последнего дня месяца. Как-то так.
Извиняюсь что не конкретизировал свою проблему. Как узнать день недели первого/последнего дня месяца?
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!