如何在javascript中检查时间范围

sil*_*abu 5 javascript time

我有开始和结束时间以及日期.就像这样

         stime:1pm , etime:2pm , date:2/6/2013
Run Code Online (Sandbox Code Playgroud)

我想将这个开始和结束时间和日期存储到mongodb中.所以在保存这些细节之前

,我应该在这个日期内检查,这个时间范围是否存在

所以如何在javascript中做到这一点.如何检查时间范围是否已经存在?

我试过这样的事.但它运作不正常.即使我不知道我的方法,无论是对还是错?

我希望有人帮我找到解决方案.

   var d0 = new Date("01/01/2001 " + "8:30 AM");
   var d1 = new Date("01/01/2001 " + "9:00 PM");
   var d2 = new Date("01/01/2001 " + "8:30 AM");
  var d3 = new Date("01/01/2001 " + "9:00 PM");
 if(d2<d0&&d3<=d0||d2<d1&&d3<=d3)
 {
      console.log("available");
 }else{
     console.log("not available");
 }
Run Code Online (Sandbox Code Playgroud)

mok*_*oka 11

使用时间戳而不是Date对象,以便有效地比较范围.对于数据库来说,这也可以通过时间戳进行索引.
如果你不知道的时间,这是较早对日期为时间跨度,那么你可以做minmax检查.但是,如果您确实知道之前的时间,之后的时间,不需要min,max条件是否需要.
条件波纹管检查时间跨度是否重叠,这意味着true即使仅第一个时间跨度的最后一秒与第二个时间跨度的第一个秒重叠也是如此.
您可以对Contain进行其他检查,并确定哪些包含哪些,但这是不同的条件.

// time of first timespan
var x = new Date('01/01/2001 8:30:00').getTime();
var y = new Date('01/01/2001 9:30:00').getTime();

// time of second timespan
var a = new Date('01/01/2001 8:54:00').getTime();
var b = new Date('01/01/2001 9:00:00').getTime();

if (Math.min(x, y) <= Math.max(a, b) && Math.max(x, y) >= Math.min(a, b)) {
    // between
}
Run Code Online (Sandbox Code Playgroud)