求两组时间是否交集,使用 24 小时制
例1:  ta = "06:00-22:00"; 
  tb = "08:00-09:00";  此时 tb 被 ta 包含。例2:
  
  ta = "08:00-01:00"; 
  tb = "05:00-06:00";  此时 tb 不被 ta 包含。  想了好久不知道程序应该怎么写,望各位大侠指点,感激不尽!

解决方案 »

  1.   

    static bool function( string ta, string tb)
    {
    //ta = "06:00-08:00"; 
    //tb = "08:00-09:00"; string[] tempTime = ta.Split('-');
    DateTime taStart = DateTime.Parse(tempTime[0]);
    DateTime taEnd = DateTime.Parse(tempTime[1]);
    tempTime = tb.Split('-');
    DateTime tbStart = DateTime.Parse(tempTime[0]);
    DateTime tbEnd = DateTime.Parse(tempTime[1]);         if ( taStart <= tbStart && tbStart <= taEnd)
    {
    return true;
    } if ( tbStart <= taStart && taStart <= tbEnd)
    {
    return true;
    }
    return false;

    }
      

  2.   

    楼主用string.Substring从ta和tb中把小时和分钟提取出来,然后用int.Parse转换成数字来比较吧
      

  3.   

    各位大侠辛苦了。谢谢!有一种情况我还是想问一下,比如:ta = "06:00-00:00";
    tb = "22:00-23:00";这样的怎么去比较呢?因为 ta 中的 00:00 是0,怎么与 tb 中的数比大小呢?
      

  4.   

    有一种情况我还是想问一下,比如:ta = "06:00-00:00";
    tb = "22:00-23:00";这种情况可以做出下处理:
    如果00:00位于"-"号之右,替换为24:00,再进行比较,另外没必要转换为别的类型,就用string进行比较
      

  5.   

    谢谢 jointan.你说的也是一种解决办法结账,谢谢各位的相帮。
      

  6.   

    public static bool getResult(string ta,string tb)
            {
                string[] tas = ta.Split('-');
                string[] tbs = tb.Split('-');
                int taStart = int.Parse(tas[0].Replace(":", ""));
                int taEnd = int.Parse(tas[1].Replace(":", ""));
                int tbStart = int.Parse(tbs[0].Replace(":", ""));
                int tbEnd = int.Parse(tbs[1].Replace(":", ""));            if (taStart == 0 && taEnd == 2400) return true;            if (taStart < taEnd)        //A只有1段
                {
                    if (tbStart < tbEnd)    //B只有1段
                    {
                        if (taStart <= tbStart && taEnd >= tbEnd)
                        {
                            return true;
                        }
                    }
                    else                    //B两段
                    {
                        return false;       
                    }
                }
                else if (taStart > taEnd)   //A有2段
                {
                    if (tbStart < tbEnd)    //B只有1段
                    {
                        if (taStart <= tbStart || taEnd >= tbEnd)
                        {
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                    else                    //B有两段
                    {
                        if (taStart <= tbStart && taEnd >= tbEnd)
                        {
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    } 
                }
                return false;
            }