如何在Javascript中循环几个月
我正在尝试生成一个以月为单位的字符串日期列表 (即【2014年10月】、【2014年11月】、【2015年1月】) 在此处使用代码:如何在Javascript中循环几个月,javascript,date,while-loop,Javascript,Date,While Loop,我正在尝试生成一个以月为单位的字符串日期列表 (即【2014年10月】、【2014年11月】、【2015年1月】) 在此处使用代码: var resultList = []; var date = new Date("October 13, 2014"); var endDate = new Date("January 13, 2015"); var monthNameList = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug",
var resultList = [];
var date = new Date("October 13, 2014");
var endDate = new Date("January 13, 2015");
var monthNameList = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
while (date <= endDate)
{
var stringDate = monthNameList[date.getMonth()] + " " + date.getFullYear();
resultList.push(stringDate);
date.setDate(date.getMonth() + 1);
}
return resultList;
var resultList=[];
var日期=新日期(“2014年10月13日”);
var endDate=新日期(“2015年1月13日”);
var monthNameList=[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”];
而(date问题出在您的date.setDate(date.getMonth()+1)
代码中,因为MDN文档说明,该函数将日期设置为指定的date
对象。因此,它的行为与您的预期不符
为了更好地说明问题,调用date.getMonth()时,date
变量初始化为Mon-Oct 13 2014 00:00:00 GMT-0400(东部夏令时)
它返回9
表示日历年中的第10个月;因此将该值增加1会将日期的日期设置为10
在下一次迭代中,月份没有改变,因此代码重新执行date.getMonth()
,再次返回9
,依此类推。
当
条件永远无法满足时,这种意外行为会继续无休止地重复
应更新代码以改为使用。使用setMonth()
而不是setDate()
来设置日期变量的月份
date.setMonth(date.getMonth() + 1);
让我们使用以下方法进行操作:
你可以发现两个日期之间的差异
moment("08-31-2017").diff(moment("01-31-2017"), 'months', true)
谢谢!setMonth()解决了我的问题。解释得非常清楚。
moment("08-31-2017").diff(moment("01-31-2017"), 'months', true)