我正在寻找一个js(或jQuery)函数,我传递一个开始日期和结束日期,并且该函数返回该范围内每个日期的包含列表(数组或对象)。
例如,如果我将此函数传递给2010-08-31和2010-09-02的日期对象,则该函数应返回: 2010-08-31 2010-09-01 2010-09-02
任何人都有这样做的功能,或者知道包含此功能的jQuery插件吗?
答案 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字符串解析为实际日期等)。