Проверьте конфликт времени на 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.