Проверьте конфликт времени на JavaScript

У меня есть проект регистрации, и пользователь получает тему в списке. Теперь, как проверить, что время конфликтует с другими? Переменные являются строками, и мой учитель хочет только этот формат.

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

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

Как я могу проверить, что время2 конфликтует со временем1? Есть ли библиотека jquery, которая может быть полезна?

3 ответа

Решение

Я хотел бы создать функцию для разбиения этих строк на многомерный массив:

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"
    ]
]

Теперь вы можете сравнить оба временных сегмента, сравнивая значения в этих массивах.

Преобразуйте время в числа и сравните:

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

Знайте, что вы можете выполнить сравнение между датами

Преобразуйте время начала и время окончания в даты, затем проверьте, является ли время окончания time2 позже времени начала time1 и наоборот. Если оба времени окончания позже, чем время начала другого, у вас есть противоречивые временные диапазоны. Конвертировать строки в даты проще с помощью moment.js.

Другие вопросы по тегам