日期范围之间的JavaScript日期范围

标签 javascript date

我正在尝试进行 IF 检查以查看 X 日期范围是否在 Y 日期范围之间。但它没有在正确的时间返回正确的真/假:

var startdate = new Date('06/06/2013');
var enddate = new Date('06/25/2013');
var startD = new Date('06/08/2013');
var endD = new Date('06/18/2013');

if(startD >= startdate || endD <= enddate) {
  return true;
} else {
  return false;
}

这行得通,但是如果我将 startdate 更改为 06/09/2013 并将 enddate 更改为 06/17/2013 它在应该工作时不再工作。

如果 startdate06/07/2013 并且 enddate06/15/2013,但没有。有什么想法吗?

最佳答案

如果您要检测完全包含,那是相当容易的。 (此外,您不需要显式的return true/false,因为无论如何条件都是 bool 值。只需返回它即可)

// Illustration:
//
// startdate                          enddate
// v                                        v
// #----------------------------------------#
//
//         #----------------------#
//         ^                      ^
//         startD              endD
return startD >= startdate && endD <= enddate;

重叠测试稍微复杂一些。如果两个日期范围重叠,则无论顺序如何,以下内容都将返回 true

// Need to account for the following special scenarios
//
// startdate     enddate
// v                v
// #----------------#
//
//         #----------------------#
//         ^                      ^
//         startD              endD
//
// or
//
//              startdate        enddate
//                 v                v
//                 #----------------#
//
//         #------------------#
//         ^                  ^
//       startD              endD
return (startD >= startdate && startD <= enddate) ||
       (startdate >= startD && startdate <= endD);

@Bergi 的回答可能更优雅,因为它只检查两个日期范围的开始/结束对。

关于日期范围之间的JavaScript日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17304426/

相关文章:

php - 选择周一到周五之间的日期

javascript - 带有额外日期的工作日 Javascript

javascript - 提示方法不起作用?

javascript - 自定义单选按钮 - 在 IE 中损坏

javascript - 为什么在没有 try/catch block 进行异步测试的情况下 Jest 会出错

ruby-on-rails - ruby/rails 中的日期范围查询

javascript - 仅使用 javascript 获取网站的正文元素

php - 用javascript显示动态时间

c# - 当 culture 在 asp.net webform 中设置为 ar-AE 时,7 月的月份显示错误

java - 如何将给定的字符串格式解析为 dd-MMM-yyyy hh :mm:ss:aa?