首页 新闻 会员 周边 捐助

求两个时间段是否与另两个时间段有重合

0
悬赏园豆:50 [已解决问题] 解决于 2016-12-01 14:44

情况1:

A1(20161001) ----- B1(20161101)

A2(20160201) ----- B2(20161101)

 

情况2:

A1(20161001) ----- B1(20171001)

A2(20161101) ----- B2(20161220)

 

20161001是2016年10月01日

判断A1---B1之间的任意一天是否在A2---B2之间

请问有好的算法吗?

ahhg的主页 ahhg | 初学一级 | 园豆:3
提问于:2016-12-01 00:51
< >
分享
最佳答案
0

max(a1,a2)<=min(b1,b2)

收获园豆:50
Daniel Cai | 专家六级 |园豆:10424 | 2016-12-01 10:35

感谢!

ahhg | 园豆:3 (初学一级) | 2016-12-01 14:44
其他回答(4)
0


var time1Ticks = Convert.ToDateTime("2016-10-01").Ticks;
var time2Ticks = Convert.ToDateTime("2016-11-01").Ticks;

var time3Ticks = Convert.ToDateTime("2016-02-01").Ticks;
var time4Ticks = Convert.ToDateTime("2016-11-01").Ticks;

用这个,然后加上比较就可以了。只是我的简单想法,多多交流。

GDOUJKZZ | 园豆:315 (菜鸟二级) | 2016-12-01 08:55

怎么比较呢?

var new_start_time = Date.parse(new Date('2016-11-19 10:11:00'));
var new_end_time = Date.parse(new Date('2016-11-19 12:20:20'));


var start_time = Date.parse(new Date('2016-11-18 20:00:20'));
var end_time = Date.parse(new Date('2016-11-19 09:57:40'));
//new的时间段不在另一个时间段区间中
console.log(new_start_time > end_time,new_end_time > start_time);//true,true 不能满足

new_start_time = Date.parse(new Date('2016-11-19 10:11:00'));
new_end_time = Date.parse(new Date('2016-11-19 12:20:20'));


start_time = Date.parse(new Date('2016-11-18 20:00:20'));
end_time = Date.parse(new Date('2016-11-19 19:57:40'));

//new时间段在另一个时间段中
console.log(start_time <= new_start_time && new_start_time <= end_time);//true 可以满足


new_start_time = Date.parse(new Date('2016-11-19 10:11:00'));
new_end_time = Date.parse(new Date('2016-11-20 08:20:20'));


start_time = Date.parse(new Date('2016-11-19 11:00:20'));
end_time = Date.parse(new Date('2016-11-19 23:57:40'));
//new时间段在另一个时间段中
console.log(start_time <= new_start_time && new_start_time <= end_time);//false 不能满足
console.log(start_time <= new_end_time && new_end_time <= end_time);//false 不能满足

 

 

支持(0) 反对(0) ahhg | 园豆:3 (初学一级) | 2016-12-01 10:03
0

将a1a2b1b2全部由yyyyMMdd变成毫秒值得形式,a1,a2中的任意一天就是a1~a2毫秒值之间的随机数。然后判断是否>=b1并且<=b2.以天为增量的话就是毫秒值变成原a1+随机数*一天的毫秒。

guodaxia | 园豆:87 (初学一级) | 2016-12-01 09:10
0

开始大于另一个的结束.或者结束大于另一个的开始

吴瑞祥 | 园豆:29449 (高人七级) | 2016-12-01 09:23
//新时间段
var new_start_time = Date.parse(new Date('2016-11-19 10:11:00'));
var new_end_time = Date.parse(new Date('2016-11-19 12:20:20'));


var start_time = Date.parse(new Date('2016-11-18 20:00:20'));
var end_time = Date.parse(new Date('2016-11-19 09:57:40'));

new_start_time > end_time; //true
new_end_time > start_time; //true

然而新时间段并不在另一个时间段中

 

支持(0) 反对(0) ahhg | 园豆:3 (初学一级) | 2016-12-01 09:48

@ahhg: (new_start_time>start_time&&new_start_time<end_time)

|| (new_end_time>start_time&&new_end_time<end_time)

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2016-12-01 11:02
0

你比较  A1与B1的diff与A1与A2的diff,diff1>=diff2,就在A2---B2之间啊

让我发会呆 | 园豆:2929 (老鸟四级) | 2016-12-01 11:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册