我有一个包含不同日期的数组,格式为年-月-日。
像这样:
var dates = ["2016-08-01", "2016-08-09", "2016-08-10", ....];
我还有一个函数可以将今天的日期格式化为与上面相同的格式。并存储在一个变量中:
var currentDate; //Contains current date in the format of year-month-day
我需要做的是检查数组中是否有任何日期:
- 与今天的日期匹配。- 例如今天应该是 2016-08-13
- 与从今天开始的 14 天前匹配。 - 例如从今天 (2016-08-13) 倒退 14 天就是 2016-07-30
- 或匹配当前和 14 天前的任何日期。
我试图通过遍历数组、检查每个值来完成此操作。但我不确定 if 条件/条件
for(var i = 0; i < dates.length; i++) {
if(currentDate === *condition*) {
sendDate(dates[i]);
}
}
有人对此有好的解决方案吗?提前致谢!
最佳答案
首先,从您的 currentDate 创建一个新的 Date()(currentDate 是字符串格式 Y-d-m,小时和分钟是 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 个条件匹配,只需在一个 if
中检查 3 个条件并将其推送到您的 result 数组
关于javascript - 检查日期是否在两个日期之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38935755/