使用momentjs检查此时间范围是否与其他时间范围冲突

Mar*_*ien 3 javascript momentjs

场景1

Time range 1 : 2016-12-06 11:00 to 2016-12-06 12:00
Time range 2 : 2016-12-06 10:00 to 2016-12-06 13:00
time range 1 is completely conflict with time range 2 and vice versa
Run Code Online (Sandbox Code Playgroud)

情景2

Time range 1 : 2016-12-06 11:00 to 2016-12-06 12:00
Time range 2 : 2016-12-06 11:00 to 2016-12-06 14:00
time range 1 is partial conflict with time range 2 and vice versa
Run Code Online (Sandbox Code Playgroud)

场景3

Time range 1 : 2016-12-06 11:00 to 2016-12-06 12:00
Time range 2 : 2016-12-06 09:00 to 2016-12-06 12:00
time range 1 is partial conflict with time range 2 and vice versa
Run Code Online (Sandbox Code Playgroud)

如何使用momentjs完成上述场景?我尝试了这个isBetween功能,但无法让它工作.

ich*_*lau 5

我认为时刻是你正在寻找的.使用它overlapscontains功能来实现它.您可以链接到cdnjs服务器的时刻范围.

var date1 = [moment("2016-12-06 11:00"), moment("2016-12-06 12:00")];
var date2 = [moment("2016-12-06 10:00"), moment("2016-12-06 13:00")];

var range  = moment.range(date1);
var range2 = moment.range(date2);

// has overlapping
if(range.overlaps(range2)) {
    if((range2.contains(range, true) || range.contains(range2, true)) && !date1[0].isSame(date2[0]))
    alert("time range 1 is completely conflict with time range 2 and vice versa");
  else
    alert("time range 1 is partially conflict with time range 2 and vice versa");
}
Run Code Online (Sandbox Code Playgroud)