javascript - JS - 如何匹配重叠的时间范围?

标签 javascript vue.js filter

我正在尝试用 Javascript 构建一个自定义过滤器,我正在尝试返回 true/匹配以毫秒 getTime() 格式格式化的两个时间范围。 第一时间范围来自对象。 第二个时间范围来自指定要过滤的时间的用户输入。 目前,当第二个时间范围落在第一个时间范围的最小值和最大值之间时,我的代码匹配,但我希望它能够在时间范围之间完全重叠时匹配。

JS:

                var filter_from = new Date();
                filter_from.setHours(this.availability_from.split(/:/)[0]);
                filter_from.setMinutes(this.availability_from.split(/:/)[1]);
                filter_from = filter_from.getTime();

                var filter_to = new Date();
                filter_to.setHours(this.availability_from.split(/:/)[0]);
                filter_to.setMinutes(this.availability_from.split(/:/)[1]);
                filter_to = filter_to.getTime();

                var a_from = new Date();
                a_from.setHours((hits[i].availability.split("-")[0]).split(":")[0]);
                a_from.setMinutes((hits[i].availability.split("-")[0]).split(":")[1]);
                a_from = a_from.getTime();

                var a_to = new Date();
                a_to.setHours((hits[i].availability.split("-")[1]).split(":")[0])
                a_to.setMinutes((hits[i].availability.split("-")[1]).split(":")[1])
                a_to = a_to.getTime();



                if (Math.min(filter_from, filter_to) <= Math.max(a_from, a_to) && Math.max(filter_from, filter_to) >= Math.min(a_from, a_to)) {
                    console.log("matched");
                }

任何帮助都会很棒,这让我很困惑,谢谢! :)

最佳答案

当任何端点落在另一个区间的端点之间时,存在重叠。

if(  (filter_from < a_from && a_from < filter_to)
  || (filter_from < a_to   &&   a_to < filter_to)
  || (a_from < filter_from && filter_from < a_to)
  || (a_from < filter_to   &&   filter_to < a_to))

关于javascript - JS - 如何匹配重叠的时间范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58268031/

相关文章:

html - 如何防止命名空间 HTML 元素的 Vue 错误 "Unknown custom element"

javascript - AJAX 部分加载后 Vue 绑定(bind)?

list - 空列表问题的头函数

javascript - Firefox 中的默认事件对象?

javascript - 如何使用 jQuery 将 JavaScript 代码添加到现有的 iFrame 中?

javascript - 全屏播放器中的浏览器安全性

javascript - 比较两个列表以查找新元素、删除的元素和现有元素

javascript - axios get 函数在 get 方法中参数为 null 或为空时会导致 404 错误

bash - 根据匹配多个值之一的列提取行

jquery - IE 7 - 当为具有绝对位置的 DIV 设置不透明度时,它的子 div 消失