UNPKG

praznici

Version:

Biblioteka koja omogućava proveru da li je datum državni praznik u Republici Srbiji ili ne.

81 lines (73 loc) 3.09 kB
// Praznici u Republici Srbiji // // Prema Zakonu o državnim i drugim praznicima („Službeni glasnik RS”, br. 43/01, 101/07 i 92/11) // // Državni praznici u Republici Srbiji koji se praznuju neradno su: // Nova godina - 1. i 2. januar // Sretenje - Dan državnosti Srbije -15. i 16. februar // Praznik rada -1. i 2. maj // Dan primirja u Prvom svetskom ratu -11. novembar // // Verski praznici u Republici Srbiji koji se obeležavaju neradno su: // Prvi dan Božića - 7. januar // Vaskršnji praznici - počev od Velikog petka zaključno sa drugim danom Vaskrsa // // Zakonom je propisano da ako jedan od datuma kada se praznuju navedeni // državni praznici padne u nedelju, ne radi se prvog narednog radnog dana. import dayjs from 'dayjs'; import calculateOrthodoxEasterForYear from './uskrs'; const ISO_DATE_FORMAT = 'YYYY-MM-DD'; // Does the date fall on the exact date of national holiday const doesNationalHolidayFallOnDate = inputDate => { const mdate = dayjs(inputDate); const date = mdate.format(ISO_DATE_FORMAT); switch (date.substr(5)) { // Nova godina - 1. i 2. januar case "01-01": case "01-02": // Prvi dan Božića - 7. januar case "01-07": // Sretenje - Dan državnosti Srbije - 15. i 16. februar case "02-15": case "02-16": // Praznik rada - 1. i 2. maj case "05-01": case "05-02": // Dan primirja u Prvom svetskom ratu - 11. novembar case "11-11": return true; } const easter = calculateOrthodoxEasterForYear(mdate.year()); const theGoodFriday = dayjs(easter).add(-2, "days").format(ISO_DATE_FORMAT); const theHolySaturday = dayjs(easter).add(-1, "days").format(ISO_DATE_FORMAT); if (date == easter || date == theGoodFriday || date == theHolySaturday) { return true; } return false; }; export const isNationalHoliday = date => { // Zakonom je propisano da ako jedan od datuma kada se praznuju // navedeni državni praznici padne u nedelju, ne radi se prvog // narednog radnog dana. const sunday = dayjs(date).startOf("week").format(ISO_DATE_FORMAT);; if (doesNationalHolidayFallOnDate(sunday)) { let prviRadniDan = sunday; let loopCount = 0; // failsafe against infinite loop while (loopCount++ < 7 && doesNationalHolidayFallOnDate(prviRadniDan)) { prviRadniDan = dayjs(prviRadniDan).add(1, "days"); } // Ako uskrs i prvi maj padaju na isti dan, onda je i ponedeljak i utorak neradan const easter = calculateOrthodoxEasterForYear(dayjs(date).year()); const uskrsPadaNaPrviMaj = easter.substr(5) === '05-01'; if (uskrsPadaNaPrviMaj && easter === sunday) { //prviRadniDan = dateAdd(prviRadniDan, 1, "days"); } const days = dayjs(date).diff(prviRadniDan, "days"); if (days <= 0) { return true; } } return doesNationalHolidayFallOnDate(date); }; export const daLiJeNacionalniPraznik = isNationalHoliday; export default isNationalHoliday;