javascript - 检查日期是否在两个日期之间

标签 javascript jquery

我有一个包含不同日期的数组,格式为年-月-日。

像这样:

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/

相关文章:

javascript - CSS3 Marquee/Ticker 动画最后没有空格

javascript - 页面加载时,@Url.Action 为 null 或 javascript 中的 ""

php - 如何在按钮单击时添加带有 mysql 表数据的下拉列表?

javascript - 使用 `.toggle()` 而不是应用类来显示内容

c# - 从 javascript 拖放事件调用 C# 方法

javascript - <span> onclick 事件未触发

javascript - Jquery - 检测窗口宽度

javascript - 将插入符号值设置到某个位置后无法获取插入符号位置值

php - 在 PHP 中登录 Javascript

javascript - 在 iOS 设备上的 iframe 中填写表单时跳转页面