#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)