preveri-datum
Version:
67 lines (66 loc) • 1.71 kB
JavaScript
export const prviDelovniDan = (datum) => {
var free = [
"-01-01",
"-01-02",
"-02-08",
"-04-27",
"-05-01",
"-05-02",
"-06-25",
"-11-01",
"-12-26",
Easter(datum.getFullYear()),
];
var d = new Date();
for (var i = 0; i < free.length; i++) {
free[i] = d.getFullYear() + free[i];
}
d = new Date(datum);
if (
free.indexOf(datum) == 0 ||
free.indexOf(datum) == 1 ||
free.indexOf(datum) == 4 ||
free.indexOf(datum) == 5
) {
d.setDate(d.getDate() + 2);
} else if (
free.indexOf(datum) == 2 ||
free.indexOf(datum) == 3 ||
free.indexOf(datum) == 6 ||
free.indexOf(datum) == 7 ||
free.indexOf(datum) == 8 ||
free.indexOf(datum) == 9
) {
d.setDate(d.getDate() + 1);
}
if (d.getDay() == 0) {
d.setDate(d.getDate() + 1);
} else if (d.getDay() == 6) {
d.setDate(d.getDate() + 2);
}
console.log(d);
return d;
};
function Easter(Y) {
var C = Math.floor(Y / 100);
var N = Y - 19 * Math.floor(Y / 19);
var K = Math.floor((C - 17) / 25);
var I = C - Math.floor(C / 4) - Math.floor((C - K) / 3) + 19 * N + 15;
I = I - 30 * Math.floor(I / 30);
I =
I -
Math.floor(I / 28) *
(1 -
Math.floor(I / 28) *
Math.floor(29 / (I + 1)) *
Math.floor((21 - N) / 11));
var J = Y + Math.floor(Y / 4) + I + 2 - C + Math.floor(C / 4);
J = J - 7 * Math.floor(J / 7);
var L = I - J;
var M = 3 + Math.floor((L + 40) / 44);
var D = L + 28 - 31 * Math.floor(M / 4);
return "-" + padout(M) + "-" + padout(D + 1);
}
function padout(number) {
return number < 10 ? "0" + number : number;
}