Почему не работает с одинаковыми месяцами?
/**
* Вовзращает массив массивов с месяцем и годом
*
* @return [1,2020], [2,2020] ...
*/
function dateRange(startDate, endDate) {
const fromYear = startDate.getFullYear();
// console.log(fromYear,['qq']); //2020
const fromMonth = startDate.getMonth();//01(feb)
const toYear = endDate.getFullYear();//2020
const toMonth = endDate.getMonth();//01 (feb)
const months = [];
for(let year = fromYear; year <= toYear; year++) { // 2020 <= 2020 ; year++
let month = year === fromYear ? fromMonth : 0; // if 2020 === 2020 то month = 01(feb) else month = 0(jan)
// we get month = 01(feb)
const monthLimit = year === toYear ? toMonth : 11; // if 2020 === 2020 то monthLimit = 01(feb) else = 11 (december)
// we get month = 01(feb)
for(; month <= monthLimit; month++) { // if 01 (feb) <= 01(feb) ; month ++
months.push([month ,year])
}
}
return months;
}
при разных месяцах например 2.02.2019 - 14.04.2019 скрипт срабатывает но при одинаковых месяцах и разных годах [20.02.2019 - 14.02.2020] или одинаковый месяц и один год нет[20.02.2019 - 26.02.2019].
Ответы (1 шт):
Автор решения: Denis640Kb
→ Ссылка
Как-то странно у Вас было.
Вместо 12 месяца - нулевой месяц. и так далее.
Если Вы указываете одинаковый месяц и год на входе - то логично, что результат будет нулевой, так как у Вас выводится месяц и год.
А в остальном вот с правками:
function dateRange(startDate, endDate) {
const fromYear = startDate.getFullYear();
const fromMonth = startDate.getMonth();
const toYear = endDate.getFullYear();
const toMonth = endDate.getMonth();
const months = [];
for(let year = fromYear; year <= toYear; year++) {
let month = year === fromYear ? fromMonth : 1;
const monthLimit = year === toYear ? toMonth : 12;
for(; month <= monthLimit; month++) {
months.push([month ,year])
}
}
return months;
}
var now = new Date();
var then = new Date(2019, 2, 1);
console.log(dateRange(then, now));