希望你一切安好。如何检查数组中的任何日期是否在日期范围内?
我需要从阵列
var arrayDates = ["2013-07-26", "2013-07-27"];
如果任何时间段查看在的
var startDate = new Date("2013-07-10");
var endDate = new Date("2013-07-10");
日期范围,我很坚持,并开始迷惑自己。任何人都可以帮我解决这个问题。
P.S.例如,上面的日期是动态的。
谢谢!
希望你一切安好。如何检查数组中的任何日期是否在日期范围内?
我需要从阵列
var arrayDates = ["2013-07-26", "2013-07-27"];
如果任何时间段查看在的
var startDate = new Date("2013-07-10");
var endDate = new Date("2013-07-10");
日期范围,我很坚持,并开始迷惑自己。任何人都可以帮我解决这个问题。
P.S.例如,上面的日期是动态的。
谢谢!
您将需要使用真正的日期对象而不是字符串。
也许看看使用dateJs解析日期 http://www.datejs.com/
但你真的需要通过日期的数组迭代,并检查它们是否落在你的开始和结束日期的刻度值之间。
试试这个:
var arrayDates = [];
arrayDates.push(new Date(2013, 7 , 26));
arrayDates.push(new Date(2013, 7 , 27));
var startDate = new Date("2013-07-10");
var endDate = new Date("2013-07-10");
for(i = 0; i < arrayDates.length; i++){
if(arrayDates[i] >= startDate && arrayDates[i] <= endDate) {
alert('Yes');
}
}
希望你可以将这些日期转换为数字,然后对它们进行比较,这里一个例子:
var arrayDates = ["2013-07-26", "2013-07-27"];
var unDash = function (string) {
return string.replace(/-/g, "")
}
var dateInRange = function (date, startDate, endDate) {
date = unDash(date)
startDate = unDash(startDate)
endDate = unDash(endDate)
return date > startDate && date < endDate
}
// You now filter your array to retrieve your dates
var dates = arrayDates.filter(function (date) {
return dateInRange(date, '2013-07-10', '2013-07-31')
})
另一种方法 - http://jsfiddle.net/Mh5vn/
var ds = ["2013-07-26", "2013-07-27"];
Array.prototype.between = function(arg) {
var d1 = new Date(this[0]),
d2 = new Date(this[1]),
d3 = new Date(arg);
return (d1.getTime() <= d3.getTime() && d3.getTime() <= d2.getTime());
}
console.log(ds.between('2013-07-26'));
// true
console.log(ds.between('2013-07-28'));
// false
是否要使用'Date'对象或只是文本字符串? – MathSquared
你能提供一个你的代码的实例吗?正如所写的,'var startDate = 2013-07-10;'将被解释为算术并返回'1996'。 – Blazemonger
我将使用Date对象。更新。 – ignaty