Наша методологія календаря
Наш календарний механізм поєднує детерміновані астрономічні й релігійні алгоритми з постійною перевіркою за першоджерелами державного законодавства та нормативними постановами.
1. Детермінований механізм із кількома календарями
Державні свята в різних країнах світу визначаються за різними математичними й культурними системами. Наш процес охоплює чотири основні календарні механізми:
Фіксовані дати григоріанського календаря: національні дні й історичні річниці, що припадають на сталі календарні дати (наприклад, 4 липня, 1 січня).
Астрономічні обчислення та розрахунки рівнодень: сонцестояння, рівнодення й сонячні календарні терміни, обчислені за точними небесними координатами.
Місячні та місячно-сонячні календарі: ісламський календар гіджри, Китайський Новий рік за місячним календарем, Дівалі й буддійські відзначення, дати яких обчислюються за стандартними моделями видимості фаз Місяця та звіряються з оголошеннями національних релігійних органів.
Алгоритми обчислення Великодня: цикли західного (григоріанського) та східного православного (юліанського) Великодня і пов’язані з ними рухомі свята (Страсна п’ятниця, Вознесіння Господнє, понеділок після П’ятидесятниці, Свято Тіла і Крові Христових).
2. Законодавство та офіційні постанови
Математичні моделі визначають попередні дати, але законодавство встановлює дні законного відпочинку. Ми звіряємо кожну обчислену дату з першоджерелами права: національними трудовими кодексами, парламентськими актами, офіційними державними вісниками й розпорядженнями виконавчої влади.
Якщо стандартні бібліотеки не враховують законодавчі зміни або спираються на застарілі правила, перевірені виправлення застосовуються через наш реєстр ручних перевизначень (data/holiday-overrides.ts).
3. Моделювання компенсаційних днів і перенесення свят, що припадають на вихідні
Один із найважливіших аспектів планування свят — визначити, що відбувається, коли встановлене законом свято припадає на вихідний.
Наш механізм послідовно враховує національні правила компенсації: автоматичне перенесення на наступний понеділок (наприклад, у Великій Британії, Австралії та США), перенесення на попередню п’ятницю або перенесення на наступний робочий день (наприклад, в Албанії та Південно-Африканській Республіці). Це дає змогу точно визначати кількість робочих днів.
4. Постійний аудит законодавства та регресійне тестування
Календар кожної країни проходить автоматичну перевірку за знімками даних (npm run holidays:validate:snapshots), щоб запобігти регресіям; водночас наш процес безперервного моніторингу відстежує нові закони, разові банківські вихідні та королівські чи президентські постанови в усьому світі.