使用javascript获取跨度内的日期列表

时间:2010-09-21 19:51:04

标签: javascript date

我正在寻找一个js(或jQuery)函数,我传递一个开始日期和结束日期,并且该函数返回该范围内每个日期的包含列表(数组或对象)。

例如,如果我将此函数传递给2010-08-31和2010-09-02的日期对象,则该函数应返回: 2010-08-31 2010-09-01 2010-09-02

任何人都有这样做的功能,或者知道包含此功能的jQuery插件吗?

2 个答案:

答案 0 :(得分:4)

听起来您可能想要使用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 :(得分:1)

我知道没有预先定义的方法,但您可以像:

那样实现它
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字符串解析为实际日期等)。