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的两侧,不能有交集请教下如何实现算法,谢谢了!

解决方案 »

  1.   

    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("有");
      

  2.   

    前几天处理过一个类似的,稍改了下,试试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("相交");
    }以上只是一般的处理过程,至于是否能转换等细节问题自己处理下
      

  3.   

    if((B.Date1 >= A.Date1) && (B.Date1 <= A.Date1))
       return 有交集
    else
       return 没有交集
      

  4.   

     B.DATE2<A.DATE1 或 B.DATE1>A.DATE2 即符合要求