我有一个注册项目,用户在列表中获得主题。现在如何检查时间是否与其他人发生冲突?变量是字符串,我的老师只想要这种格式。
var time1 = '10:00:AM-12:00:PM';
var time2 = '10:30:AM-11:00:AM';
如何检查time2是否与time1冲突?有一个jquery库可能会有帮助吗?
答案 0 :(得分:2)
我要做的是创建一个将这些字符串拆分成多维数组的函数:
var timeSegments = function(time) {
var timeArray = time.split("-");
for(i = 0; i < timeArray.length; i++) {
timeArray[i] = timeArray[i].split(":");
}
return timeArray;
}
然后,我会为两个时间段运行该功能:
time1 = timeSegments('10:00:AM-12:00:PM');
time2 = timeSegments('10:30:AM-11:00:AM');
time1
的输出应为:
[
[
0: "10"
1: "00"
2: "AM"
], [
0: "12"
1: "00"
2: "PM"
]
]
time2
的输出应为:
[
[
0: "10"
1: "30"
2: "AM"
], [
0: "11"
1: "00"
2: "AM"
]
]
现在,您可以通过比较这些数组中的值来比较两个时间段。
答案 1 :(得分:0)
转换both start times and end times to dates,然后检查time2的结束时间是否晚于time1的开始时间,反之亦然。如果两个结束时间都晚于其他开始时间,则您的时间范围会有冲突。通过moment.js可以更轻松地将字符串转换为日期。
答案 2 :(得分:0)
将您的时间转换为数字并进行比较:
var time1 = '10:00:AM-12:00:PM';
var time2 = '10:30:AM-11:00:AM';
var convertedTime1 = getConvertedStartEndTime(time1)
var convertedTime2 = getConvertedStartEndTime(time2)
function getConvertedStartEndTime(time){
time = time.split('-').map(function(item){ return item.replace('PM', '10000').replace('AM', 1)});
time = time.map(function(item){ return item.split(':')});
var time2StartConverted = time[0].reduce(function (a, b) {
return parseInt(a) + parseInt(b);
});
var time2EndConverted = time[1].reduce(function (a, b) {
return parseInt(a) + parseInt(b);
});
return [time2StartConverted, time2EndConverted]
}
知道你可以在日期之间进行比较