Проблема здесь в том, что в цикле используется та же самая переменная date
.Вам необходимо выполнить его повторную инициализацию.
Как видно из раздела Значение параметра в ссылке здесь .Нулевые и отрицательные значения в setDate()
устанавливают дату предыдущего месяца.
Следовательно, в setDate(0)
значение даты установлено на последний день февраля. Теперь, когда вы используете ту же переменную, setDate(-1)
берет предыдущий месяц с февраля, следовательно, вы получаете январь.
Вам нужно изменить код на что-то вроде этого:
generate() {
this.date_new = [];
var date1 = new Date();
for (var i = 0; i < 7; i++) {
// re-initialize date
var date = new Date();
date.setDate(date1.getDate() - i);
var a = date.toString();
var str = this.convert(a);
this.date_new.push(str);
}
}
Надеюсь, это поможет:)