【发布时间】:2018-02-05 15:26:18
【问题描述】:
我正在尝试比较数组中的日期是否重叠但有问题。用户可以添加任意数量的日期,我需要检查它们以确保没有重叠。
日期数组(开始和结束日期在它们之间加上(-):
dates (4) ["02/07/2018-02/07/2018", "02/05/2018-02/07/2018", "02/06/2018-02/06/2018", "02/08/2018-02/08/2018"]
我的代码:
function CheckOverlappingDates(dates) {
var startDate = [];
var endDate = [];
var isOverlap;
for (var i = 0; i < dates.length; i++) {
var split = dates[i].split('-'); // just split once
startDate.push(new Date(split[0]).toLocaleDateString());
endDate.push(new Date(split[1]).toLocaleDateString());
for (var x = 0; x < startDate.length; x++) {
if (startDate[x] >= startDate[x + 1] && startDate[x + 1] <= endDate[x + 1]) {
isOverlap = true;
} else {
isOverlap = false;
}
}
}
}
我将它们分成 startdate 和 enddate ,如下所示
但我的函数不比较多个日期范围。
【问题讨论】:
-
将它们转换为纪元毫秒。然后比较。
-
This:
new Date(split[0]).toLocaleDateString()然后使用startDate[x] >= startDate[x + 1]比较结果字符串不是一个好主意。原始字符串的解析是依赖于实现的,就像 toLocaleString 的结果一样,没有理由相信结果是正确或可靠的,而且许多人相信它们不会。
标签: javascript arrays date date-comparison