Дата начала и окончания в диапазоне нескольких дат - PullRequest
0 голосов
/ 11 февраля 2010

Привет, моя проблема несколько особенная, а может и нет. Однако проблема в том, что я анализирую диапазон дат в одном массиве, где мне нужно найти дату начала и дату окончания, где бы это ни происходило в диапазонах. Я не знаю, объяснил ли я это хорошо, но если вам нужна дополнительная информация, пожалуйста, дайте мне знать.

например. [2010-7-11,2010-7-12,2010-7-13, 2010-9-01, 2010-9-02, ....]

Сейчас

2010-7-11 начало и 2010-7-13 конец

2010-9-01 начало 2010-9-02 конец

То же самое для целых диапазонов в массиве

Заранее спасибо

1 Ответ

0 голосов
/ 11 февраля 2010

Вот что-то быстрое и грязное.Ожидается, что массив 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...