2017-05-06 84 views
0

我有兩個日期,例如1/04/2017 - 2017年3月30日Javascript:查找兩個日期之間每個月的第一個和最後一個日期?

我想查找上述日期範圍之間每個月的第一個和最後一個日期。

這樣的 -

2017年1月4日 - 30/04/2017 2017年1月5日 - 31/05/2017 2017年1月6日 - 30/06/2017

這是因爲我想用在fullcalendar該解決方案,週期性活動,這樣我就可以在下面的代碼添加日期範圍 -

batches.push({ 
    id  : item.id, 
    title  : item.title.textCapitalize(), 
    start  : item.start_time, 
    end  : item.end_time, 
    dow  : item.weekdays, 
    ranges : 
    [ 
     { 
     start : '2017-04-01', //all of april 
     end  : '2017-04-20', 
     }, 
     { 
     start : '2017-05-01', //all of may 
     end  : '2017-05-31', 
     }, 
     { 
     start : '2017-06-01', //all of june 
     end  : '2017-06-30', 
     }, 
    ], 
    backgroundColor : backgroundColor, 
    borderColor  : backgroundColor 
}); 
+0

你爲什麼不使用[fullcalendar復發事件(http://stackoverflow.com/q/15161654/35070)? – phihag

+0

謝謝你的建議,但我只有在我的數據庫表中開始和結束日期。 –

+0

結合#phihag建議和#mplungjan解決方案後,現在好了,我終於得到了我想要的!! –

回答

1

下面是一個工作版本

function pad(num) { 
 
    return String("0" + num).slice(-2); 
 
} 
 

 
function formatDate(d) { 
 
    return d.getFullYear() + "-" + pad(d.getMonth() + 1) + "-" + pad(d.getDate()) 
 
} 
 
var aDay = 24 * 60 * 60 * 1000, 
 
    range = { // your range 
 
    start: new Date(2017, 3, 1), // remember month is 0 based 
 
    end: new Date(2017, 5, 30) 
 
    }, 
 
    ranges = []; 
 

 
console.log("start", range.start, "end", range.end) 
 

 
for (var i = range.start.getTime(), end = range.end.getTime(); i <= end;) { 
 
    var first = new Date(i), 
 
    last = new Date(first.getFullYear(), first.getMonth() + 1, 0); // last day of the month 
 
    ranges.push({ 
 
    start: formatDate(first), 
 
    end: formatDate(last) 
 
    }) 
 
    i = last.getTime() + aDay; 
 
    // if (!confirm(formatDate(new Date(i)))) break 
 
} 
 
console.log(ranges)

+0

Thankx很多@mplungjan .. –

相關問題