嗨,我的問題有點特別,或許不是。然而,問題是我解析了一個數組中的日期範圍,我需要找到起始日期和結束日期,以便在範圍內發生。我不知道我是否解釋得很好,但如果您需要更多信息,請告訴我。在多個日期範圍內的開始日期和結束日期範圍
例如[2010-7-11,2010-7-12,2010-7-13,2010年9月1日,2010年9月2日,....]
現在
2010年7月11日開始和結束2010-7-13
2010年9月1日開始2010年9月2日結束
所以對陣列中的整個範圍
在此先感謝
嗨,我的問題有點特別,或許不是。然而,問題是我解析了一個數組中的日期範圍,我需要找到起始日期和結束日期,以便在範圍內發生。我不知道我是否解釋得很好,但如果您需要更多信息,請告訴我。在多個日期範圍內的開始日期和結束日期範圍
例如[2010-7-11,2010-7-12,2010-7-13,2010年9月1日,2010年9月2日,....]
現在
2010年7月11日開始和結束2010-7-13
2010年9月1日開始2010年9月2日結束
所以對陣列中的整個範圍
在此先感謝
這裏的東西快速髒。它預計dates
數組已經按升序排序。
var dates = ["2010-7-11", "2010-7-12", "2010-7-13", "2010-9-01", "2010-9-02"],
startDates = [], endDates = [],
lastDate = null, date = null;
for (var i=0, l=dates.length; i<l; ++i) {
date = new Date(dates[i].replace(/-/g, "/"));
//
if (!lastDate) {
startDates.push(lastDate = date);
}
// If the diffrence between the days is greater than the number
// of milliseconds in a day, then it is not consecutive
else if (date - lastDate > 86400000) {
lastDate = null;
endDates.push(date);
}
}
// Close the last range
endDates.push(date);
// Result is two symetical arrays
console.log(startDates, endDates);
這不起作用,例如,如果我們在數組中有3個以上的元素,無論日期是否被排序,4元素也被指定爲開始日期,即使它是連續的一部分...但是無論如何, – Narayan 2010-02-15 17:21:32
「範圍」你的意思是「連續幾天」? – 2010-02-11 11:53:21
是的,這是正確的 – Narayan 2010-02-11 11:56:09
以及範圍我的意思是,但內部數組可能有多個範圍等我需要描述每個範圍的開始和結束。 – Narayan 2010-02-11 11:57:27