javascript - How to check if any date from array is in date range? - Stack Overflow

Hope you are all well.I need to check if any date from arrayvar arrayDates = ["2013-07-26", &

Hope you are all well.

I need to check if any date from array

var arrayDates = ["2013-07-26", "2013-07-27"];

is in date range of

var startDate = new Date("2013-07-10");
var endDate = new Date("2013-07-10");

I am really stuck and started to confuse myself. Can anyone help me with that please.

P.S. Dates above are for example, they will be dynamic.

Thank you!

Hope you are all well.

I need to check if any date from array

var arrayDates = ["2013-07-26", "2013-07-27"];

is in date range of

var startDate = new Date("2013-07-10");
var endDate = new Date("2013-07-10");

I am really stuck and started to confuse myself. Can anyone help me with that please.

P.S. Dates above are for example, they will be dynamic.

Thank you!

Share Improve this question edited Jul 9, 2013 at 14:07 ignaty asked Jul 9, 2013 at 13:58 ignatyignaty 5351 gold badge4 silver badges18 bronze badges 3
  • Will you be using Date objects or just text strings? – ameed Commented Jul 9, 2013 at 14:03
  • Can you provide an actual example of your code? As written, var startDate = 2013-07-10; will be interpreted as arithmetic and return 1996. – Blazemonger Commented Jul 9, 2013 at 14:03
  • I will be using Date objects. Updated. – ignaty Commented Jul 9, 2013 at 14:07
Add a ment  | 

4 Answers 4

Reset to default 3

You will need to use real date objects rather than strings.

maybe have a look at using dateJs for parsing dates http://www.datejs./

But really you need to iterate through the array of dates and check if they fall between the tick value of your start and end dates.

Try this:

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');
 }
}

Another method - http://jsfiddle/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

After you have the date objects you can pare them in a pretty straight forward way. See this link at the bottom.

I see your question is tagged jquery, so you could do something like this:

$.each(arrayDates, function(i, val) {
    if (val > endDate || val < startDate)
    {
        //Date is outside of that range
    }
});

Hopefully you can convert these dates to numbers and pare them, here an example :

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')

})

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1743715316a4494887.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信