Как добавить дни к дате?
Как добавить дни к текущей Date
в JavaScript? Существует ли в JavaScript встроенная функция, аналогичная AddDay()
в .NET?
5 ответ(ов)
Вы можете создать функцию для добавления дней к дате следующим образом:
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
как изменяемый класс, а не как неизменяемую структуру. Поэтому лучше создавать новые экземпляры, как показано в приведенном коде.
Ваш код создает объект Date
для сегодняшнего дня и объекта Date
для завтрашнего дня. Обратите внимание, что код для завтрашнего дня работает нормально, поскольку вы устанавливаете день, прибавляя 1
к текущему дню. Вот ваш код с пояснениями:
var today = new Date(); // создаем объект Date для сегодняшнего дня
var tomorrow = new Date(); // создаем новый объект Date для завтрашнего дня
tomorrow.setDate(today.getDate() + 1); // устанавливаем завтрашнее число, добавляя 1 к текущему дню
Следует быть осторожным, так как это может оказаться немного запутанным. Когда вы устанавливаете значение tomorrow
, это работает, потому что его текущее значение совпадает с годом и месяцем today
. Однако, если вы установите число, например "32", это все равно будет работать нормально, и дата автоматически перейдет на следующий месяц. Таким образом, метод setDate()
достаточно умный, чтобы обработать такие случаи.
Ваши ответы, похоже, немного запутаны. Я предпочитаю следующий способ:
var ms = new Date().getTime() + 86400000;
var tomorrow = new Date(ms);
Метод getTime()
возвращает количество миллисекунд с 1970 года, а 86400000
— это количество миллисекунд в одном дне. Таким образом, переменная ms
будет содержать миллисекунды для желаемой даты.
Использование конструктора Date
с миллисекундами позволяет получить нужный объект даты.
Мое простое решение:
nextday = new Date(oldDate.getFullYear(), oldDate.getMonth(), oldDate.getDate() + 1);
Это решение не имеет проблем с переходом на зимнее/летнее время. Также вы можете добавлять или вычитать любые значения для лет, месяцев, дней и т.д.
day = new Date(oldDate.getFullYear() - 2, oldDate.getMonth() + 22, oldDate.getDate() + 61);
Это корректный код.
Вот способ, который можно использовать для добавления дней, месяцев и лет к определенной дате в 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
на любое нужное вам значение, чтобы изменить количество добавляемого времени.
Как отформатировать дату в JavaScript?
Где найти документацию по форматированию даты в JavaScript?
Форматирование даты в JavaScript в виде yyyy-mm-dd
Как вычесть дни из обычной даты?
Как преобразовать дату в UTC?