我正在尝试获取两个日期之间的月份列表。我从数组中获取开始和结束日期。我使用moment.js
来做到这一点。这是我的代码
var Start = moment(new Date(data2[0])).format("YYYY-MM-DD")
var End = moment(new Date(data2[data2.length-1])).format("YYYY-MM-DD")
console.log(Start) //It prints 2018-08-08
console.log(End) //It prints 2019-01-04
var dateStart = moment(Start)
var dateEnd = moment(End)
var timeValues = [];
while (moment(dateEnd) > moment(dateStart) || moment(dateStart).format('MM') === moment(dateEnd).format('MM')) {
timeValues.push(moment(dateStart).format('YYYY-MM'));
moment(dateStart).add(1,'month');
}
alert (timeValues)
我从here那里获得了这段代码
我得到的错误是
TypeError: dateStart.format is not a function
请纠正我在哪里做错了
答案 0 :(得分:0)
使用.format("DD/MM/YYYY");
时,您将返回字符串。
字符串不具有format
作为错误消息状态。
v -- error here
var dateStart = moment(data2[0]).format("DD/MM/YYYY");
上面的行返回一个String
,您想在format
对象中使用Date
函数。
尝试这样的操作(假设data2[data2.length-1]
和data2[0]
是有效日期):
var dateStart = moment(new Date(data2[0]));
var dateEnd = moment(new Date(data2[data2.length-1]));
我已经用密码笔将live example签出了。
尝试使用此代码
var dateStart = moment("2018-08-08").format("DD/MM/YYYY"); //#08/08/2018
var dateEnd = moment("2019-04-01").format("DD/MM/YYYY"); //#01/04/2019
var timeValues = [];
dateEndObj = moment(dateEnd);
dateStartObj = moment(dateStart);
while (dateEndObj > dateStartObj || dateStartObj.format('MM') === dateEndObj.format('MM')) {
timeValues.push(dateStartObj.format('YYYY-MM'));
dateStartObj.add(1,'month');
}
alert (timeValues);