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
JavaScript
;
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;