Je travaille sur un problème où j'ai une date de début et un nombre de jours, donc quand un employé demande un congé pour 20 jours, alors la procédure est d'ajouter les jours à cette date, sans y compris les fins de semaine et les jours fériés afin d'obtenir la date à laquelle cette personne devrait reprendre son travail. Voici ce que j'ai travaillé avec jusqu'à présent. mais je suis à défaut d'obtenir une vraie date limite,Congé employé Calculer la date en Javascript
// fonction trie vacances
function isHoliday(dt, arr){
var bln = false;
for (var i = 0; i < arr.length; i++) {
if (compare(dt, arr[i])) { //If days are not holidays
bln = true;
break;
}
}
return bln;
}
// la fonction ci-dessous aide à la procédure de comparaison de vacances
function compare(dt1, dt2){
var equal = false;
if(dt1.getDate() == dt2.getDate() && dt1.getMonth() == dt2.getMonth() && dt1.getFullYear() == dt2.getFullYear()) {
equal = true;
}
return equal;
}
maintenant dans ma fonction principale J'essaie d'utiliser les jours fériés et week-ends et d'ajouter des jours à la date de début afin que je puisse archiver la date de fin. Je pense que je vais mal quelque part dans ce code et maintenant je suis pile ..
function returnfinaldate()
{
var holiday = [];
var cy = new Date().getFullYear();
holiday[0] = new Date(cy, 1, 01);
holiday[1] = new Date(cy, 1, 26);
holiday[2] = new Date(cy, 2, 16);
holiday[3] = new Date(cy, 3, 08);
holiday[4] = new Date(cy, 3, 20);
holiday[5] = new Date(cy, 4, 14);
holiday[6] = new Date(cy, 4, 16);
holiday[7] = new Date(cy, 4, 17);
holiday[8] = new Date(cy, 5, 01);
holiday[9] = new Date(cy, 5, 14);
holiday[10] = new Date(cy, 6, 03);
holiday[11] = new Date(cy, 6, 09);
holiday[12] = new Date(cy, 6, 21);
holiday[13] = new Date(cy, 6, 21);
holiday[14] = new Date(cy, 6, 26);
holiday[15] = new Date(cy, 9, 02);
holiday[16] = new Date(cy, 9, 22);
holiday[17] = new Date(cy, 10, 09);
holiday[18] = new Date(cy, 12, 21);
holiday[19] = new Date(cy, 12, 25);
holiday[20] = new Date(cy, 12, 26);
var startDate = new Date();
var endDate = new Date();
startDate='8/1/2017';
noOfDaysToAdd = 7, count = 0;
while (count < noOfDaysToAdd) {
endDate.setDate(endDate.getDate()+1)
// Date.getDay() gives weekday starting from 0(Sunday) to
// 6(Saturday)
if (endDate.getDay() != 0 && endDate.getDay() != 6 && !isHoliday(endDate, holiday)) {
count++;
}
}
return endDate;
}
La date finale que je reçois est erronée. besoin d'aide ici.
Votre 'endDate' est basé sur la date actuelle et non la version chaîne de' startDate' – charlietfl