检查JavaScript上的时间冲突

时间:2016-01-26 08:40:21

标签: javascript jquery html time time-format

我有一个注册项目,用户在列表中获得主题。现在如何检查时间是否与其他人发生冲突?变量是字符串,我的老师只想要这种格式。

var time1 = '10:00:AM-12:00:PM';

var time2 = '10:30:AM-11:00:AM';

如何检查time2是否与time1冲突?有一个jquery库可能会有帮助吗?

3 个答案:

答案 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]
}

知道你可以在日期之间进行比较