我需要检查两个时间段之间的时间间隔。即需要阻止客户方的任命。
我有2个阵列
var fromTimings=["8:00","12:00","","16:00"];
var toTimings=["9:10","01:00","","19:00"];
这些是已经预订的街区。即第一次预约从8:00到9:10预订,第二次预约从12:00到1:00,依此类推。
所有约会都以上述格式存储在两个数组中。
现在我需要检查用户定义的插槽。
即如果用户输入喜欢fromTime = 9:15和10:00那么必须返回/显示可用
逻辑如下
fromTime | toTime | result
------------+--------------+-----------
7:00 | 7:59 | true
8:10 | 10:00 | false ( already meeting between 8:00 to 9:10)
19:01 | 23:59 | true
有人可以帮忙吗?
提前致谢
答案 0 :(得分:2)
循环显示您的预留时间,并检查每个时段是否与查询时段重叠。
如果第一个开头在第二个结束之前,第一个结束于第二个结束之后,则两个周期重叠。
答案 1 :(得分:2)
在下面的代码中,为了便于比较,hh:mm格式的时间被转换为分钟
//just for logging the messages
var log = (function() {
var $log = $('#log');
return function(msg) {
$('<p/>', {
text: msg
}).appendTo($log)
}
})();
var fromTimings = ["8:00", "12:00", "", "16:00"];
var toTimings = ["9:10", "01:00", "", "19:00"];
function test(from, to) {
var f = toMins(from),
t = toMins(to),
ft, tt;
for (var i = 0; i < fromTimings.length; i++) {
ft = toMins(fromTimings[i]), tt = toMins(toTimings[i]);
if ((f >= ft && f <= tt) || (t >= ft && t <= tt)) {
return false;
}
}
return true;
}
function toMins(time) {
var parts = time.split(':');
return (+parts[0] * 60 + +parts[1]) || 0;
}
function testTime(from, to) {
log(from + '-' + to + ': ' + test(from, to))
}
testTime('07:00', '07:59');
testTime('8:10', '10:00');
testTime('19:01', '23:59');
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="log"></div>
&#13;
答案 2 :(得分:0)
预约的时间段是(8:00~9:10),(12:00~13:00)和(16:00~19:00)。所以如果给出的时间间隔是(A~B):
if(B<8)
return true;
if(A>8&&B<9:10)
return true;
if(A>12&&B<13)
return ture;
if(A>13&&B<16)
return true;
if(A>19)
return true
return false;