@Andre548

Как добавить количество дней к текущей дате?

Всем привет, не могу прибавить дни к дате и вывести ее, я как будто постоянно рандомно дату получаю, не пойму в чем проблема
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.
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
Mike_Ro
@Mike_Ro Куратор тега JavaScript
Python, JS, WordPress, SEO, Bots, Adversting
Зачем Вы добавляете дни к настоящей дате, а не к дате с обучением?
// ...
// var newDate = moment().add(missingDays, 'days');
var newDate = endDate.clone().add(missingDays, 'days'); // update
// ...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы