Если я правильно понимаю ваш вопрос, это может быть достигнуто в два этапа. Сначала рассчитайте момент, который отмечает начальную дату предыдущего месяца:
var prevMonth = moment().subtract(1, 'month').startOf('month');
var prevMonthDays = prevMonth.daysInMonth();
Затем выполните итерацию по диапазону 0...prevMonthDays
, рассчитав даты за день в этом диапазоне относительно начала предыдущего месяца prevMonth
:
var prevMonthDay = prevMonth.clone().add(i, 'days').format("YYYY-MM-DD");
Что-то вроде этого должно достичь того, что вам нужно:
// Get moment at start date of previous month
var prevMonth = moment().subtract(1, 'month').startOf('month');
var prevMonthDays = prevMonth.daysInMonth();
// Array to collect dates of previous month
var prevMonthDates = [];
for (var i = 0; i < prevMonthDays; i++) {
// Calculate moment based on start of previous month, plus day offset
var prevMonthDay = prevMonth.clone().add(i, 'days').format("YYYY-MM-DD");
prevMonthDates.push(prevMonthDay);
}
console.log(prevMonthDates)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.23.0/moment.min.js"></script>
Надеюсь, это поможет!
Обновление
Чтобы вычислить список дат, начиная с многих месяцев до начала текущего месяца, приведенный выше код можно обобщить следующим образом:
var monthsPast = 4;
var prevMonthDays = 0;
var prevMonth = moment();
// Iterate over number of months past that we want to collect dates for
for (var i = 0; i < monthsPast; i++) {
// Calculate the moment at the start of a previous month
var prevMonthStart = moment().subtract(i + 1, 'month').startOf('month');
// Increment total range to collect dates over, and update prevMonth
// to current calculated moment which represents oldest month start
prevMonthDays += prevMonthStart.daysInMonth();
prevMonth = prevMonthStart;
}
// Array to collect dates of previous month
var prevMonthDates = [];
for (var i = 0; i < prevMonthDays; i++) {
// Calculate moment based on start of previous month, plus day offset
var prevMonthDay = prevMonth.clone().add(i, 'days').format("YYYY-MM-DD");
prevMonthDates.push(prevMonthDay);
}
console.log(prevMonthDates)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.23.0/moment.min.js"></script>