最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Check if a date is between two dates - Stack Overflow

programmeradmin6浏览0评论

I have an array with different dates with the format of year-month-day.

something like this:

var dates = ["2016-08-01", "2016-08-09", "2016-08-10", ....];

I also have a function that formats todays date in the same format as above. And is stored in a variable:

var currentDate; //Contains current date in the format of year-month-day

What i need to do is to check if any of the dates in the array, either:

  • Match with today's date.- e.g. Today would be 2016-08-13
  • Match with 14 days back from today's date. - e.g. 14 days back from today (2016-08-13) would be 2016-07-30
  • Or match with any dates between the current and 14 days back.

I'm trying to do this by looping through the array, checking each value. But im unsure about the if condition/conditions

    for(var i = 0; i < dates.length; i++) {
      if(currentDate === *condition*) {
        sendDate(dates[i]);
      } 
    }

Anyone have a good solution for this? Thanks in advance!

I have an array with different dates with the format of year-month-day.

something like this:

var dates = ["2016-08-01", "2016-08-09", "2016-08-10", ....];

I also have a function that formats todays date in the same format as above. And is stored in a variable:

var currentDate; //Contains current date in the format of year-month-day

What i need to do is to check if any of the dates in the array, either:

  • Match with today's date.- e.g. Today would be 2016-08-13
  • Match with 14 days back from today's date. - e.g. 14 days back from today (2016-08-13) would be 2016-07-30
  • Or match with any dates between the current and 14 days back.

I'm trying to do this by looping through the array, checking each value. But im unsure about the if condition/conditions

    for(var i = 0; i < dates.length; i++) {
      if(currentDate === *condition*) {
        sendDate(dates[i]);
      } 
    }

Anyone have a good solution for this? Thanks in advance!

Share Improve this question asked Aug 13, 2016 at 18:29 qua1ityqua1ity 6232 gold badges9 silver badges28 bronze badges 2
  • It seems you don't care about current date at all, you only care about 14 days before/after today. Start with having these values in variables and use standard greater-than/less-than operators. – Amit Commented Aug 13, 2016 at 18:36
  • What do you mean? The current date is obviously important since it's different every day. – qua1ity Commented Aug 13, 2016 at 18:43
Add a ment  | 

3 Answers 3

Reset to default 3

Firstly, create a new Date() from your currentDate ( currentDate is string format Y-d-m with hour and minutes is 00:00)

var current = new Date(currentDate);
var matchWithCurrent = [];
var matchWithDayBack = [];
var between = [];

just loop through your date array

for (var i=0; i<dates.length; i++) {

    var tmpDate = new Date(dates[i]); //Convert string to date
    var diff = Math.ceil((current - tmpDate) / (1000 * 3600 * 24)); //get time difference (current - tmpDate is milisecond, we need convert it to day)

    // Check condition and push it on array correct

    if (diff == 0) {
        matchWithCurrent.push(dates[i]);
    }

    if (diff == 14) {
        matchWithDayBack.push(dates[i]);
    }

    if ((diff > 0) && (diff <14)) {
        between.push(dates[i]);
    }

}

console.log(matchWithCurrent);
console.log(matchWithDayBack);
console.log(between);

If you want only one array match with 3 condition just check 3 condition in only one if and push it into your result array

One way would be to parse the dates to millisecond values and pare them.

var todayParts = currentDate.split('-');
var today = new Date(todayParts[0], todayParts[1], todayParts[2]).getTime();
var otherParts = dates[i].split('-');
var other = new Date(otherParts[0], otherParts[1], otherParts[2]).getTime();

if (today < other + 1209600000 /* 2 weeks in milliseconds */) {
    // The other date is less than 2 weeks before today
}

You can read here why I parsed it manually instead of using Date.parse().

You can pare two dates something like that:
var currentDate = new Date();
 for(var i = 0; i < dates.length; i++) {<br>
 var arrDate = new Date(dates[i]);
    if(currentDate == arrDate)
    {//pare array dates with current date
        //your code here
    }
 var beforeDate = (currentDate.getDate() - 14); //14 days before
    if(arrDate >= beforeDate && arrDate <= currentDate){
        //pare dates between current date and 14 days before date
    } 
  }
发布评论

评论列表(0)

  1. 暂无评论