Получить каждую отдельную дату за последние 7 дней с текущей сегодняшней даты в Javascript

#javascript #date

#javascript #Дата

Вопрос:

Я пытаюсь вернуть каждую дату с сегодняшней даты. Каждый вопрос, который я нашел до сих пор, дает мне только одно значение, а не каждую конкретную дату, как показано в следующем выводе ниже. То, что я в настоящее время возвращаю прямо сейчас, продолжает повторять вычтенную дату, противоположную сегодняшней дате.

Желаемый результат:

 08-17-2020, 08-16-2020, 08-15-2020, 08-14-2020, 08-13-2020, 08-12-2020, 07-11-2020
  

Что я в настоящее время получаю обратно:

 08-17-2020,08-16-2020,08-14-2020,08-11-2020,08-7-2020,08-2-2020,07-27-2020
  

JS:

 function convertToday(data) {
  let date = new Date(data)
  let year = date.getFullYear()
  let month = date.getMonth()   1
  let day = date.getDate()
  let formatted = "0"   month   "-"   day   "-"   year
  return formatted
}

let d = new Date();
const newDate = [...Array(7)].map((a, b) => convertToday(d.setDate(d.getDate() - b)))
console.log(newDate)
  

Ответ №1:

Это потому, что вы постоянно изменяете d имеющуюся у вас переменную.

Это работает для меня в node 14.0 (я думаю, везде тоже)

 let d = new Date();
const newDate = [...Array(7)].map((a, b) => convertToday(new Date().setDate(d.getDate() - b)))
console.log(newDate)
  

Обратите внимание на new Date().setDate(...) вместо d.setDate(...)

Ответ №2:

Ссылка @edo.n На случай, если вам нужно вернуть дату без метки времени или повторно преобразовать дату

 let d = new Date();
const newDate = [...Array(7)].map((a, b) => {const date = new Date()
date.setDate(d.getDate() - b)
return date})
console.log(newDate)