首页 > 解决方案 > Jquery查找日期是否在日期范围之间

问题描述

所以我试图找出某个日期是否在另外两个日期之间,然后显示正确的 div 文本。我让它工作到一定程度,但它似乎无法检查多个 div。下面是我下面的内容,基本上它使用“日期选择”的 div 并遍历每个“日期”的 div 以找到日期匹配。

如果日期是 02/01/2019,它似乎可以工作,但如果我将日期设置为 02/01/2020,它将找不到正确的 div,它应该是 02/01/2020-01/01/2021。有谁知道问题是什么?

// on click
$(".check").click(function() {
  // foreach date div
  $(".date").each(function() {
    var firstdate = $(this).text().split('-')[0];
    var lastdate = $(this).text().split('-')[1];
    var fDate, lDate, cDate;
    fDate = new Date(firstdate); // firstdate
    lDate = new Date();
    lDate.setDate(lDate.getDate(lastdate)); // lastdate
    cDate = new Date($('.date-selected').text()); // date to check if between

    if (Date.parse(cDate) <= Date.parse(lDate) && Date.parse(cDate) >= Date.parse(fDate)) {
      // output matched date
      $('.correct-date').text('Date between: ' + $(this).text());
      return true;
    }
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="date-selected">02/01/2020</div>
<div class="date">01/01/2019-01/01/2020</div>
<div class="date">02/01/2020-01/01/2021</div>
<div class="correct-date"></div>
<button class="check">check</button>

标签: javascriptjqueryhtml

解决方案


不需要new Date,只使用Date.parse

$(".check").click(function() {
  // foreach date div
  $(".date").each(function() {

    if (
        dateCheck(
          $(this).text().split('-')[0], 
          $(this).text().split('-')[1], 
          $('.date-selected').text()
        )
    ) {
      // output matched date
      $('.correct-date').text('Date between: ' + $(this).text());
      return true;
    }
  });
});

function dateCheck(from,to,check) {

    var fDate,lDate,cDate;
    fDate = Date.parse(from);
    lDate = Date.parse(to);
    cDate = Date.parse(check);

    if((cDate <= lDate && cDate >= fDate)) {
        return true;
    }
    return false;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="date-selected">02/01/2020</div>
<div class="date">01/01/2019-01/01/2020</div>
<div class="date">02/01/2020-01/01/2021</div>
<div class="correct-date"></div>
<button class="check">check</button>


推荐阅读