
1. Методы даты setDate() и getDate()
Чтобы добавить дни к Date в JavaScript, вызовите метод getDate() для Date, чтобы получить день месяца, затем вызовите метод setDate() для Date, передав сумму getDate() и количество дней для добавления.
Например:
function addDays(date, days) { date.setDate(date.getDate() + days); return date; }const date = new Date('2022-05-15T00:00:00.000Z');const newDate = addDays(date, 5);// 2022-05-20T00:00:00.000Z console.log(newDate);
Наша функция addDays() принимает объект Date и количество дней для добавления в качестве аргументов и возвращает тот же Date с новыми добавленными днями.
Метод Date getDate() возвращает число от 1 до 31, которое представляет день месяца определенной даты.
Метод Date setDate() изменяет день месяца объекта Date на число, переданное в качестве аргумента.
Если указанное вами число изменяет месяц или год Date, setDate() автоматически обновляет информацию Date, чтобы отразить это.
// April 25, 2022 const date = new Date('2022-04-25T00:00:00.000Z');date.setDate(40);// May 10, 2022 console.log(date); // 2022-05-10T00:00:00.000Zconsole.log(date.getDate()); // 10
В апреле всего 30 дней, поэтому передача 40 в setDate() увеличивает месяц на единицу и устанавливает день месяца на 10.
Как избежать побочных эффектов
Метод setDate() изменяет объект Date, для которого он вызывается. Это вносит побочный эффект в нашу функцию addDays(). Чтобы избежать изменения переданного Date и создать чистую функцию, сделайте копию Date и вызовите setDate() на этой копии вместо оригинала.
function addDays(date, days) { const dateCopy = new Date(date); dateCopy.setDate(date.getDate() + days); return dateCopy; }const date = new Date('2022-05-15T00:00:00.000Z');const newDate = addDays(date, 5);console.log(newDate); // 2022-05-20T00:00:00.000Z// original not modified console.log(date); // 2022-05-15T00:00:00.000Z
Функции, которые не изменяют внешнее состояние (т. е. чистые функции), как правило, более предсказуемы и о них легче рассуждать. Это делает хорошей практикой ограничение количества побочных эффектов в ваших программах.
2. Функция date-fns addDays()
Кроме того, вы можете использовать чистую функцию addDays() из NPM-пакета date-fns, чтобы быстро добавлять дни в Date.
import { addDays } from 'date-fns';const date = new Date('2022-05-15T00:00:00.000Z');const newDate = addDays(date, 5);console.log(newDate); // 2022-05-20T00:00:00.000Z// original not modified console.log(date); // 2022-05-15T00:00:00.000Z
Обновлено на: codingbeautydev.com
Все сумасшедшие вещи, которые делает JavaScript
Увлекательное руководство по тонким предостережениям и менее известным частям JavaScript.

Зарегистрируйтесь и немедленно получите бесплатную копию.