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.000Z
console.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.

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