У меня есть две даты строки, как это:JavaScript: получите все месяцы между двумя датами?
var startDate = '2012-04-01';
var endDate = '2014-11-01';
И я хочу, чтобы в конечном итоге с массивом строк, как это:
var dates = ['2012-04-01', '2012-05-01', '2012-06-01' .... '2014-11-01',];
До сих пор это то, что у меня есть, но это довольно уродливый:
var startDate = '2012-04-01';
var endDate = '2014-11-01';
var start = new Date(Date.parse(startDate));
var end = new Date(Date.parse(endDate))
var dates = [];
for (var i = start.getFullYear(); i < end.getFullYear() + 1; i++) {
dates.push(i + '-' + '-01');
}
console.log(dates);
Есть ли лучший способ? JSFiddle.
Даты начала и окончания всегда гарантированно будут полночь 1-го числа месяца? – thatidiotguy
Ваше решение легко читается и легко доказывается корректно (или легко фиксируется). Я подозреваю, что «лучшее» решение, основанное на объектах Date или юлианских значениях, которое продвигается месяц за месяцем, на самом деле окажется худшим решением. Это было бы менее читаемым, вероятно, прослушиваемым (для определенных дат ввода, например, 31 октября плюс один месяц?), И гораздо сложнее доказать его правильность. – jarmod
Проще всего использовать moment.js, пожалуйста, проверьте это решение: http://stackoverflow.com/questions/29466944/how-to-list-all-month-between-2-dates-with-moment-js – Andres