首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用动量检查此时间范围是否与其他时间范围相冲突。

使用动量检查此时间范围是否与其他时间范围相冲突。
EN

Stack Overflow用户
提问于 2016-12-05 08:53:45
回答 2查看 4.3K关注 0票数 7

场景1

代码语言:javascript
复制
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

场景2

代码语言:javascript
复制
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

场景3

代码语言:javascript
复制
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

如何使用动量完成上述场景?我尝试了isBetween函数,但没有成功。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-05 09:00:32

我认为力矩范围是你要找的。使用它的overlapscontains函数来实现它。您可以从cdnjs服务器链接到瞬间范围.

代码语言:javascript
复制
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");
}
票数 9
EN

Stack Overflow用户

发布于 2016-12-05 09:34:54

您可以使用isBetween并通过计算冲突的权重来测试场景。

代码语言:javascript
复制
function testDate(d1, d2) {
  // d1 and d2 in array format
  // [moment from, moment to]
  var count = 0;
  for (var i = 0, t; t = d1[i]; i++) {
    // use isBetween exclusion
    if (t.isBetween(d2[0], d2[1], null, '()')) {
      count++;
    }
  }

  for (var i = 0, t; t = d2[i]; i++) {
    // use isBetween exclusion
    if (t.isBetween(d1[0], d1[1], null, '()')) {
      count++;
    }
  }

  if (count > 1) {
    return console.log('completely conflict');
  }

  if (count > 0) {
    return console.log('partial conflict');
  }

  return console.log('something else');
}

var time1 = [moment('2016-12-06 11:00'), moment('2016-12-06 12:00')];
var time2 = [moment('2016-12-06 10:00'), moment('2016-12-06 13:00')];
var time3 = [moment('2016-12-06 11:00'), moment('2016-12-06 12:00')];
var time4 = [moment('2016-12-06 11:00'), moment('2016-12-06 14:00')];
var time5 = [moment('2016-12-06 11:00'), moment('2016-12-06 12:00')];
var time6 = [moment('2016-12-06 09:00'), moment('2016-12-06 12:00')];
testDate(time1, time2); // completely conflict
testDate(time3, time4); // partial conflict
testDate(time5, time6); // partial conflict
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40970369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档