我有两个这样的日期字符串:
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 .
最佳答案
这应该会产生所需的输出:
function dateRange(startDate, endDate) {
var start = startDate.split('-');
var end = endDate.split('-');
var startYear = parseInt(start[0]);
var endYear = parseInt(end[0]);
var dates = [];
for(var i = startYear; i <= endYear; i++) {
var endMonth = i != endYear ? 11 : parseInt(end[1]) - 1;
var startMon = i === startYear ? parseInt(start[1])-1 : 0;
for(var j = startMon; j <= endMonth; j = j > 12 ? j % 12 || 11 : j+1) {
var month = j+1;
var displayMonth = month < 10 ? '0'+month : month;
dates.push([i, displayMonth, '01'].join('-'));
}
}
return dates;
}
只需使用您现有的日期格式调用它:
dateRange('2013-11-01', '2014-06-01')
// ["2013-11-01", "2013-12-01", "2014-01-01", "2014-02-01", "2014-03-01", "2014-04-01", "2014-05-01", "2014-06-01", "2014-07-01", "2014-08-01", "2014-09-01", "2014-10-01", "2014-11-01", "2014-12-01"]
关于JavaScript:获取两个日期之间的所有月份?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30464628/