UNPKG

praznici

Version:

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

100 lines (76 loc) 3.48 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = exports.daLiJeNacionalniPraznik = exports.isNationalHoliday = void 0; var _dayjs = _interopRequireDefault(require("dayjs")); var _uskrs = _interopRequireDefault(require("./uskrs")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } // 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. var ISO_DATE_FORMAT = 'YYYY-MM-DD'; // Does the date fall on the exact date of national holiday var doesNationalHolidayFallOnDate = function doesNationalHolidayFallOnDate(inputDate) { var mdate = (0, _dayjs["default"])(inputDate); var 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; } var easter = (0, _uskrs["default"])(mdate.year()); var theGoodFriday = (0, _dayjs["default"])(easter).add(-2, "days").format(ISO_DATE_FORMAT); var theHolySaturday = (0, _dayjs["default"])(easter).add(-1, "days").format(ISO_DATE_FORMAT); if (date == easter || date == theGoodFriday || date == theHolySaturday) { return true; } return false; }; var isNationalHoliday = function 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. var sunday = (0, _dayjs["default"])(date).startOf("week").format(ISO_DATE_FORMAT); ; if (doesNationalHolidayFallOnDate(sunday)) { var prviRadniDan = sunday; var loopCount = 0; // failsafe against infinite loop while (loopCount++ < 7 && doesNationalHolidayFallOnDate(prviRadniDan)) { prviRadniDan = (0, _dayjs["default"])(prviRadniDan).add(1, "days"); } // Ako uskrs i prvi maj padaju na isti dan, onda je i ponedeljak i utorak neradan var easter = (0, _uskrs["default"])((0, _dayjs["default"])(date).year()); var uskrsPadaNaPrviMaj = easter.substr(5) === '05-01'; if (uskrsPadaNaPrviMaj && easter === sunday) {//prviRadniDan = dateAdd(prviRadniDan, 1, "days"); } var days = (0, _dayjs["default"])(date).diff(prviRadniDan, "days"); if (days <= 0) { return true; } } return doesNationalHolidayFallOnDate(date); }; exports.isNationalHoliday = isNationalHoliday; var daLiJeNacionalniPraznik = isNationalHoliday; exports.daLiJeNacionalniPraznik = daLiJeNacionalniPraznik; var _default = isNationalHoliday; exports["default"] = _default;