17

Как добавить дни к дате?

15

Как добавить дни к текущей Date в JavaScript? Существует ли в JavaScript встроенная функция, аналогичная AddDay() в .NET?

5 ответ(ов)

18

Вы можете создать функцию для добавления дней к дате следующим образом:

Date.prototype.addDays = function(days) {
    var date = new Date(this.valueOf());
    date.setDate(date.getDate() + days);
    return date;
}

var date = new Date();

console.log(date.addDays(5));

Этот код автоматически учитывает увеличение месяца, если это необходимо. Например:

31 августа + 1 день станет 1 сентября.

Проблема использования метода setDate напрямую заключается в том, что он изменяет само значение даты, что является нежелательным. В спецификации ECMA было решено рассматривать Date как изменяемый класс, а не как неизменяемую структуру. Поэтому лучше создавать новые экземпляры, как показано в приведенном коде.

3

Ваш код создает объект Date для сегодняшнего дня и объекта Date для завтрашнего дня. Обратите внимание, что код для завтрашнего дня работает нормально, поскольку вы устанавливаете день, прибавляя 1 к текущему дню. Вот ваш код с пояснениями:

var today = new Date(); // создаем объект Date для сегодняшнего дня
var tomorrow = new Date(); // создаем новый объект Date для завтрашнего дня
tomorrow.setDate(today.getDate() + 1); // устанавливаем завтрашнее число, добавляя 1 к текущему дню

Следует быть осторожным, так как это может оказаться немного запутанным. Когда вы устанавливаете значение tomorrow, это работает, потому что его текущее значение совпадает с годом и месяцем today. Однако, если вы установите число, например "32", это все равно будет работать нормально, и дата автоматически перейдет на следующий месяц. Таким образом, метод setDate() достаточно умный, чтобы обработать такие случаи.

1

Ваши ответы, похоже, немного запутаны. Я предпочитаю следующий способ:

var ms = new Date().getTime() + 86400000;
var tomorrow = new Date(ms);

Метод getTime() возвращает количество миллисекунд с 1970 года, а 86400000 — это количество миллисекунд в одном дне. Таким образом, переменная ms будет содержать миллисекунды для желаемой даты.

Использование конструктора Date с миллисекундами позволяет получить нужный объект даты.

1

Мое простое решение:

nextday = new Date(oldDate.getFullYear(), oldDate.getMonth(), oldDate.getDate() + 1);

Это решение не имеет проблем с переходом на зимнее/летнее время. Также вы можете добавлять или вычитать любые значения для лет, месяцев, дней и т.д.

day = new Date(oldDate.getFullYear() - 2, oldDate.getMonth() + 22, oldDate.getDate() + 61);

Это корректный код.

0

Вот способ, который можно использовать для добавления дней, месяцев и лет к определенной дате в JavaScript.

// Добавление дней
var d = new Date();
d.setDate(d.getDate() + 5);

// Добавление месяцев
var m = new Date();
m.setMonth(m.getMonth() + 5);

// Добавление лет
var y = new Date();
y.setFullYear(y.getFullYear() + 5);

В этом примере мы создаем новый объект Date и используем методы setDate(), setMonth() и setFullYear() для добавления соответствующего количества дней, месяцев и лет. Просто замените 5 на любое нужное вам значение, чтобы изменить количество добавляемого времени.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь