2016-08-13 109 views
3

我有一个数组,其日期格式为不同日期。检查日期是否在两个日期之间

是这样的:

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

我也有格式相同的格式今天的日期作为上述功能。并存储在一个变量:

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

什么,我需要做的是检查,如果阵列中任何的日期,或者:

  • 如同今天的date.-例如今天是2016-08-13
  • 与今天的14天相比较。 - 例如从今天开始的14天(2016-08-13)将会是2016-07-30
  • 或者与当前和14天之间的任何日期匹配。

我想通过循环数组,检查每个值来做到这一点。但我不确定如果条件/条件

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

任何人都有一个很好的解决方案呢?提前致谢!

+0

看来你根本不在乎当前的日期,你只关心今天之前/之后的14天。首先在变量中使用这些值,并使用标准的大于/小于运算符。 – Amit

+0

你是什么意思?现在的日期显然很重要,因为它每天都不一样。 – qua1ity

回答

2

首先,创建您的currentdate一个新的Date()(的currentdate是字符串格式YDM小时和分钟为00:00)

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

只是遍历你的约会阵列

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

如果只想要一个数组匹配3个条件,只需检查3个条件中的一个if并将其推入result array

2

一种方法是将日期解析为毫秒值并进行比较。

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 
} 

您可以阅读here为什么我分析它改为手动使用Date.parse()的。

0
You can compare 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) 
    {//compare array dates with current date 
     //your code here 
    } 
var beforeDate = (currentDate.getDate() - 14); //14 days before 
    if(arrDate >= beforeDate && arrDate <= currentDate){ 
     //compare dates between current date and 14 days before date 
    } 
    } 
相关问题