我试图将当月的每一天分配给我的对象,但是我只得到每个月的最后一天。我应该怎么做才能获得整月的工作?
function loopRange (startDate, range) {
let fromDate = moment(startDate)
let toDate = moment(startDate).add(range, 'month')
let dates = {}
for (let m = moment(fromDate); m.diff(toDate, 'days') <= 0; m.add(1, 'days')) {
dates['month_' + m.format('MM')] = {
'date': m.format('YYYY-MM-DD')
}
}
return dates
}
我想要的结果:
dates = {month_11: ['2018-11-01', '2018-11-02', ...]}
答案 0 :(得分:2)
您只得到最后一天,因为for-loop提前了一天。
但是,当分配给dates
的dic时,您将月份作为关键字-因此每次迭代(在同一月份内)都会用新的日期覆盖前一个关键字->这样您就只能得到几个月...
如果要让时间范围内的所有日期都是数组元素在月份键上划分,则可以使用以下代码:
for (let m = moment(fromDate); m.diff(toDate, 'days') <= 0; m.add(1, 'days'))
{
let month_key = 'month_' + m.format('MM');
if (!dates.hasOwnProperty(month_key))
dates[month_key] = [];
dates[month_key].push(m.format('YYYY-MM-DD'));
}