2010-02-11 237 views
0

嗨,我的問題有點特別,或許不是。然而,問題是我解析了一個數組中的日期範圍,我需要找到起始日期和結束日期,以便在範圍內發生。我不知道我是否解釋得很好,但如果您需要更多信息,請告訴我。在多個日期範圍內的開始日期和結束日期範圍

例如[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日結束

所以對陣列中的整個範圍

在此先感謝

+0

「範圍」你的意思是「連續幾天」? – 2010-02-11 11:53:21

+0

是的,這是正確的 – Narayan 2010-02-11 11:56:09

+0

以及範圍我的意思是,但內部數組可能有多個範圍等我需要描述每個範圍的開始和結束。 – Narayan 2010-02-11 11:57:27

回答

0

這裏的東西快速髒。它預計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); 
+0

這不起作用,例如,如果我們在數組中有3個以上的元素,無論日期是否被排序,4元素也被指定爲開始日期,即使它是連續的一部分...但是無論如何, – Narayan 2010-02-15 17:21:32

相關問題