如何用moment.js列出2个日期之间的所有月份?

Tac*_*Lin 15 javascript momentjs

我有两个约会

2015-3-30      2013-8-31
Run Code Online (Sandbox Code Playgroud)

我怎样才能制作一个月份列表:

[ '2015-3', '2015-2', '2015-1', '2014-12', '2014-11', '2014-10', '2014-09', '2014-08', '2014-07', '2014-06', '2014-05'....., '2013-08' ] 
Run Code Online (Sandbox Code Playgroud)

谢谢.

vin*_*nzo 34

这应该这样做:

var dateStart = moment('2013-8-31');
var dateEnd = moment('2015-3-30');
var timeValues = [];

while (dateEnd > dateStart || dateStart.format('M') === dateEnd.format('M')) {
   timeValues.push(dateStart.format('YYYY-MM'));
   dateStart.add(1,'month');
}
Run Code Online (Sandbox Code Playgroud)

  • 如果您选择类似的日期范围 - 2016-08-16到2017-02-15,这个逻辑本身就没有用.因为'2017年2月'不会被添加.只是因为在最后一次迭代的开始日期将是2017-02-16,它大于2017-02-15 (2认同)

Ale*_*ann 18

我认为原来的答案并不完全正确,因为你不会进入'2015-3'阵列.这是因为您的开始日期最终将会结束,'2015-3-31'并且会使条件失败.您可以像下面一样扩展它.

var dateStart = moment('2013-8-31');
var dateEnd = moment('2015-3-30');
var interim = dateStart.clone();
var timeValues = [];

while (dateEnd > interim || interim.format('M') === dateEnd.format('M')) {
   timeValues.push(interim.format('YYYY-MM'));
   interim.add(1,'month');
}
Run Code Online (Sandbox Code Playgroud)