我需要确定用户选择的时间(开始时间、结束时间)是否在预约时间数组中。
我从交换网络服务获取预约时间,输出为:
[{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');
}
}
如何检查开始时间和结束时间是否不在任何预约时间中。 谢谢
最佳答案
您可以组合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);
请注意,我对齐了 start_time
和 end_time
的 UTC 偏移量,以便您可以看到它的工作原理:)
关于javascript - 如何在 Javascript 中检查所选时间是否在给定时间范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39866650/