检查两次之间的时间间隔

时间:2014-09-30 03:34:50

标签: javascript datetime time

我需要检查两个时间段之间的时间间隔。即需要阻止客户方的任命。

我有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

有人可以帮忙吗?

提前致谢

3 个答案:

答案 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;
&#13;
&#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;