我正在尝试用 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/