Это потому, что setHours()
изменяет объект даты, поэтому, устанавливая часы как минимум до полуночи, условие l oop останавливает одну итерацию ранее; сначала вам нужно будет сделать копию:
getDaysArray = (start, end) => {
for (var arr = [], dt = start; dt <= end; dt.setDate(dt.getDate() + 1)) {
let newDate = new Date(dt);
arr.push(new Date(newDate.setHours(23, 59, 59, 0)));
}
return arr;
};
console.log(getDaysArray(new Date('Sun Mar 08 2020 05:30:00 GMT+0530 (India Standard Time)'), new Date('Sat Mar 14 2020 05:30:00 GMT+0530 (India Standard Time)')));
Вам бы пришлось сделать то же самое, если вы когда-либо планировали использовать генератор:
function* getDates(start, end) {
for (let dt = start; dt <= end; dt.setDate(dt.getDate() + 1)) {
yield new Date(dt)
}
}
startDate = new Date('Sun Mar 08 2020 05:30:00 GMT+0530 (India Standard Time)');
endDate = new Date('Sat Mar 14 2020 05:30:00 GMT+0530 (India Standard Time)');
console.log(Array.from(getDates(startDate, endDate), dt => new Date(dt.setHours(23, 59, 59, 0))));