2016-10-05 5 views
1

Мне нужно определить, находится ли выбранное время (время начала, время окончания) пользователем в диапазоне времени назначения.Как проверить выбранное время в заданном интервале времени в Javascript

я получаю раз назначение от обмена веб-сервиса и выход:

[{Status: "Busy", StartTime: "2016-10-05T11:00:00+10:00", EndTime: "2016-10-05T11:30:00+10:00"},{Status: "Busy", StartTime: "2016-10-05T13:00:00+10:00", EndTime: "2016-10-05T15:30:00+10:00"}] 

Время выбрало, что пользователь являются:

var start_time = Date.parse("2016-10-05T14:30"); 
var end_time = Date.parse("2016-10-05T15:00"); 

До сих пор я попытался следующие, но я не уверен, что это правильный способ:

var data = [{Status: "Busy", StartTime: "2016-10-05T11:00:00+10:00", EndTime: "2016-10-05T11:30:00+10:00"},{Status: "Busy", StartTime: "2016-10-05T13:00:00+10:00", EndTime: "2016-10-05T15:30:00+10:00"}]; 

for (var key in data) 
{ 
    var obj = data[key]; 
    if (obj['Status'] == 'Busy') 
    { 
    check_open_time_val = Date.parse(obj['StartTime']); 
    check_close_time_val = Date.parse(obj['EndTime']); 

    if (check_open_time_val > open_time) 
    { 
     console.log('Is Busy'); 
     // break; 
     return true; 
     } 
    }else { 
     console.log(obj['Status'] + 'XXXXX'); 
    } 
    } 

Как проверить, запущен ли start_t ime и время окончания не в какое-либо время встречи. Благодаря

+0

ли вам нужно определить, есть ли какое-либо совпадение с временным диапазоном пользователя и диапазонами занятости? – Phil

+0

Спасибо @Phil, это именно то, что я хочу. – snowflakes74

ответ

1

Вы можете комбинировать this logic с Array.prototype.some

let data = [{Status: "Busy", StartTime: "2016-10-05T11:00:00+10:00", EndTime: "2016-10-05T11:30:00+10:00"},{Status: "Busy", StartTime: "2016-10-05T13:00:00+10:00", EndTime: "2016-10-05T15:30:00+10:00"}], 
 
    start_time = Date.parse("2016-10-05T14:30:00+10:00"), 
 
    end_time = Date.parse("2016-10-05T15:00:00+10:00"); 
 

 
let isClash = data.some(obj => { 
 
    let s = Date.parse(obj.StartTime), e = Date.parse(obj.EndTime); 
 

 
    return obj.Status === 'Busy' && start_time <= e && end_time >= s; 
 
}); 
 

 
console.log('is clash?', isClash);

Обратите внимание, что я выравниваются UTC смещения вашего start_time и end_time, чтобы вы могли видеть, что это работает :)

+0

Абсолютно блестящий ,,, отлично работал спасибо – snowflakes74