Как я могу получить предыдущую дату в Javascript? - PullRequest
1 голос
/ 09 мая 2019

Я попробовал следующий код, чтобы получить предыдущую дату определенной даты:

var d = new Date("2019","12","21");
d.setDate(d.getDate() - 1 );
alert(d.getFullYear()+"-"+d.getMonth()+"-"+d.getDate());

Я ожидал, что этот код вернется: '2019-12-20'. Но он возвращает: '2020-0-20'.

Может кто-нибудь объяснить, почему этот код работает так? И как я могу изменить свой код, чтобы получить предыдущую дату?

Ответы [ 2 ]

5 голосов
/ 09 мая 2019

Месяцы начинаются с нуля. 0 - январь, 11 - декабрь, 12, следовательно, снова январь. Вы идете с 21 января по 20 января.

Чтобы работать с месяцами, основанными на одном, вы должны уменьшить при вставке значения в дату и приращении при чтении из нее:

//                             v
const date = new Date(2019, 12 - 1, 21);
date.setDate(date.getDate() - 1);

//                                                      v
console.log(date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate());
0 голосов
/ 09 мая 2019

У меня есть более простой способ получить новую дату, например:

let preDate =  new Date((new Date(2019, 12 - 1, 21).getTime()-24*3600))
console.log(preDate.getFullYear() + "-" + (preDate.getMonth() + 1) + "-" + preDate.getDate());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...