Когда вы используете .format("DD/MM/YYYY");
, вы возвращаете String .
Строка не имеет функции 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]));
Я сделал живой пример , используя кодовое перо, посмотрите его.
Обновленный вопрос
Попробуйте использовать этот код
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);