Получить список дат в промежутке с помощью JavaScript - PullRequest
3 голосов
/ 21 сентября 2010

Я ищу функцию js (или jQuery), в которой я передаю дату начала и дату окончания, и функция возвращает список включений (массив или объект) каждой даты в этом диапазоне.

Например, если я передам этой функции объект даты для 2010-08-31 и 2010-09-02, функция должна вернуть: 2010-08-31 2010-09-01 2010-09-02

Кто-нибудь имеет функцию, которая делает это или знает о плагине jQuery, который будет включать эту функцию?

Ответы [ 2 ]

4 голосов
/ 21 сентября 2010

Звучит так, как будто вы хотите использовать Datejs . Это очень круто.


Если вы используете Datejs, вот как вы могли бы это сделать:

function expandRange(start, end) // start and end are your two Date inputs
{
    var range;
    if (start.isBefore(end))
    {
        start = start.clone();
        range = [];

        while (!start.same().day(end))
        {
            range.push(start.clone());
            start.addDays(1);
        }
        range.push(end.clone());

        return range;
    }
    else
    {
        // arguments were passed in wrong order
        return expandRange(end, start);
    }
}

ех. для меня:

expandRange(new Date('2010-08-31'), new Date('2010-09-02'));

возвращает массив с 3 объектами Date:

[Tue Aug 31 2010 00:00:00 GMT-0400 (Eastern Daylight Time),
 Wed Sep 01 2010 00:00:00 GMT-0400 (Eastern Daylight Time),
 Thu Sep 02 2010 00:00:00 GMT-0400 (Eastern Daylight Time)]
1 голос
/ 21 сентября 2010

Нет заранее определенного метода, о котором я знаю, но вы можете реализовать его следующим образом:

function DatesInRange(dStrStart, dStrEnd) {
    var dStart = new Date(dStrStart);
    var dEnd = new Date(dStrEnd);

    var aDates = [];
    aDates.push(dStart);

    if(dStart <= dEnd) {
        for(var d = dStart; d <= dEnd; d.setDate(d.getDate() + 1)) {
            aDates.push(d);
        }
    }

    return aDates;
}

Вам необходимо добавить очистку входных данных / проверку ошибок (убедитесь, что строки Date анализируются с фактическими датами и т. Д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...