Всем привет, не могу прибавить дни к дате и вывести ее, я как будто постоянно рандомно дату получаю, не пойму в чем проблема
function checkDateFinal(firstDate, secondDate, daysFromStart) {
if (daysFromStart !== undefined) {
var totalWorkingDays = 0;
var endDateOfTraining;
var startDate = moment(firstDate, "DD.MM.YYYY");
var endDate = moment(secondDate, "DD.MM.YYYY");
for (var year = startDate.year(); year <= endDate.year(); year++) {
var startOfYear = moment({ year: year, month: 0, day: 1 });
var endOfYear = moment({ year: year, month: 11, day: 31 }).endOf('day');
endOfYear = endOfYear.isAfter(endDate) ? endDate : endOfYear;
var weekends = getWeekends(year);
var workingDays = 0;
var currentDate = moment(year === startDate.year() ? startDate : startOfYear);
function isWeekend(date) {
var dateString = date.format('YYYY.MM.DD');
var isWeekend = weekends.includes(dateString);
return isWeekend;
}
while (currentDate <= endOfYear) {
if (currentDate >= startDate && currentDate <= endDate && !isWeekend(currentDate)) {
workingDays++;
}
currentDate.add(1, 'days');
}
totalWorkingDays += workingDays;
}
if (totalWorkingDays >= daysFromStart + 1) {
return true;
} else {
App.unblockUI('body');
toastr.error('Дата окончания обучения не может быть меньше указанных дней в программе', "Ошибка");
var missingDays = daysFromStart - totalWorkingDays + 1;
var newDate = moment().add(missingDays, 'days');
endDateOfTraining = newDate.format("DD.MM.YYYY");
var errorMessage = "Количества рабочих дней в указанном периоде дат недостаточно для прохождения программы обучения, не хватает " + missingDays + ". Обучение закончится " + endDateOfTraining + ".";
$('#error_message').text(errorMessage).show();
return false;
}
} else {
App.unblockUI('body');
var errorMessage = "Не указана настройка образовательного процесса";
$('#error_message').text(errorMessage).show();
return false;
}
}
вот здесь количество дней выводит правильно, а с датой проблемы
var missingDays = daysFromStart - totalWorkingDays + 1;
var newDate = moment().add(missingDays, 'days');
endDateOfTraining = newDate.format("DD.MM.YYYY");
var errorMessage = "Количества рабочих дней в указанном периоде дат недостаточно для прохождения программы обучения, не хватает " + missingDays + ". Обучение закончится " + endDateOfTraining + ".";
вот что отображает на странице
указываю дату начала 01.11.2023
указываю дату конца 08.11.2023
получаю такой вывод
Количества рабочих дней в указанном периоде дат недостаточно для прохождения программы обучения, не хватает 27. Обучение закончится 22.12.2023.
указываю дату начала 01.11.2023
указываю дату конца 22.11.2023
получаю такой вывод
Количества рабочих дней в указанном периоде дат недостаточно для прохождения программы обучения, не хватает 17. Обучение закончится 08.12.2023.