簡體   English   中英

JavaScript - For 循環在一個月對象中添加天數 - moment.js

[英]JavaScript - For Loop to add days in a month object - moment.js

我試圖將一個月中的每一天分配給我的對象,但我只能得到每個月的最后一天。 我該怎么做才能得到整月的分配?

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', ...]}

您只能獲得最后一天,因為您的 for 循環以天為間隔推進。

但是,當分配給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'));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM