如
1,
A,2005-3至2005-7
B,2005-5至2005-8
2,
A,2005-5至2005-8
B,2005-6至2005-7
3,
A,2005-5至2005-8
B,2005-8至2005-9
等等。。。
这些都是交集
时间范围B只能在时间范围A的两侧,不能有交集
请教下如何实现算法,谢谢了!
------解决方案--------------------------------------------------------
DateTime A,B,C,D;
A=DateTime.Parse("2005-5-1");
B=DateTime.Parse("2005-8-1");
C=DateTime.Parse("2005-8-1");
D=DateTime.Parse("2005-9-1");
TimeSpan T1=B-A;
TimeSpan T2=D-C;
TimeSpan T3=D-A;
if(T1.TotalMilliseconds+T2.TotalMilliseconds<T3.TotalMilliseconds)
{
Response.Write("无");
}
else
Response.Write("有");
------解决方案--------------------------------------------------------
前几天处理过一个类似的,稍改了下,试试
- C# code
DateTime start1 = DateTime.Parse(TextBox1.Text);DateTime end1 = DateTime.Parse(TextBox2.Text);DateTime start2 = DateTime.Parse(TextBox3.Text);DateTime end2 = DateTime.Parse(TextBox4.Text);TimeSpan ts1 = start2 - start1;TimeSpan ts2;if (ts1.Ticks > 0){ ts2 = start2 - end1; if (ts2.Ticks > 0) Response.Write("不相交"); else Response.Write("相交");}else{ ts2 = start1 - end2; if (ts2.Ticks > 0) Response.Write("不相交"); else Response.Write("相交");}
------解决方案--------------------------------------------------------
if((B.Date1 >= A.Date1) && (B.Date1 <= A.Date1))
return 有交集
else
return 没有交集
------解决方案--------------------------------------------------------
B.DATE2<A.DATE1 或 B.DATE1>A.DATE2 即符合要求