如何使用 moment.js 获取从当月到过去一个月的所有月份的列表

scr*_*obh 2 javascript momentjs ecmascript-6

我正在尝试使用moment.js生成从 2020 年 4 月开始到过去一个月(2019 年 10 月)的月份列表。

const start = moment().startOf('month')
const startMonth = moment('10-01-2019', 'MM-DD-YYYY').format('MMMM YYYY')
const month = moment().startOf('month').format('MM')
for (let i = 0; i < month; i++) {
  const m = start.subtract(1, 'month').format('MMMM YYYY')
  if (m === startMonth) {
    break;
  }
  console.log(m)
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.26.0/moment.min.js" integrity="sha256-5oApc/wMda1ntIEK4qoWJ4YItnV4fBHMwywunj8gPqc=" crossorigin="anonymous"></script>
Run Code Online (Sandbox Code Playgroud)

结果我只得到了5个月的时间。有人可以帮忙吗?

Use*_*863 5

使用isSameOrBefore()

const start = moment().startOf('month')
const end = moment('11-11-2019', 'MM-DD-YYYY')

while (end.isSameOrBefore(start, 'month')) {
  console.log(start.format('MMMM YYYY'))
  start.subtract(1, 'month')
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.26.0/moment.min.js" integrity="sha256-5oApc/wMda1ntIEK4qoWJ4YItnV4fBHMwywunj8gPqc=" crossorigin="anonymous"></script>
Run Code Online (Sandbox Code Playgroud)

排除当前月份

const start = moment().startOf('month')
const end = moment('11-11-2019', 'MM-DD-YYYY')

while (end.isBefore(start, 'month')) {
  start.subtract(1, 'month')
  console.log(start.format('MMMM YYYY'))
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.26.0/moment.min.js" integrity="sha256-5oApc/wMda1ntIEK4qoWJ4YItnV4fBHMwywunj8gPqc=" crossorigin="anonymous"></script>
Run Code Online (Sandbox Code Playgroud)