求 最终时间 endTime 跟 开始时间beginTime  忙时历时的分钟数差(8 点到 23 点 为忙时),谢谢 !

解决方案 »

  1.   

    啥意思?就是endTime-beginTime在不在8点到23点?
      

  2.   

    如果beginTime是昨天的7点,endTime是今天的23:30,那你要的结果是什么?
      

  3.   

    如果是一天之内的,那么:if (beginTime <  8:00:00) beginTime =  8:00:00
    if (endTime   > 23:00:00) endTime   = 23:00:00
    然后计算 endTime - beginTime
      

  4.   

    using System;class Test
    {
      static void Main()
      {
        DateTime dt0 = new DateTime(2008, 6, 12,  5,  3, 12);
        DateTime dt1 = new DateTime(2008, 6, 12, 15, 13, 48);
        Console.WriteLine(Diff(dt0, dt1));
      }
      
      static int startHour = 8;     // 忙时开始的小时值
      static int endHour   = 23;    // 忙时结束的小时值
      
      static double Diff(DateTime dt0, DateTime dt1)
      {
        if (dt0 >= dt1) return 0;
        if (dt0.Date == dt1.Date)  // 同一天
        {
          if (dt0.Hour <  startHour) dt0 = new DateTime(dt0.Year, dt0.Month, dt0.Day, startHour, 0, 0);
          if (dt1.Hour >= endHour  ) dt1 = new DateTime(dt1.Year, dt1.Month, dt1.Day, endHour  , 0, 0);
          return (dt1 - dt0).TotalMinutes;
        }
        else                        // 不同天
        {
          // ...
        }
        return 0;
      }
    }
      

  5.   

    DateTime BeginTime = new DateTime(2008, 1, 1, 8, 0, 0);
                DateTime EndTime = new DateTime(2008, 1, 1, 23, 0, 0);
                TimeSpan t= EndTime.Subtract(BeginTime);
                MessageBox.Show("间隔时间=" + t.TotalMinutes.ToString() + "分钟");
      

  6.   

    using System;class Test
    {
      static void Main()
      {
        DateTime dt0 = new DateTime(2008, 6, 12, 23,  3, 12);
        DateTime dt1 = new DateTime(2008, 6, 14, 22, 13, 48);
        Console.WriteLine(Diff(dt0, dt1));
      }
      
      static int startHour = 8;     // 忙时开始的小时值
      static int endHour   = 23;    // 忙时结束的小时值
      
      static double Diff(DateTime dt0, DateTime dt1)
      {
        if (dt0 >= dt1) return 0;
        if (dt0.Hour <  startHour) dt0 = new DateTime(dt0.Year, dt0.Month, dt0.Day, startHour, 0, 0);
        if (dt1.Hour >= endHour  ) dt1 = new DateTime(dt1.Year, dt1.Month, dt1.Day, endHour  , 0, 0);
        if (dt0.Date == dt1.Date)   // 同一天
        {
          return (dt1 - dt0).TotalMinutes;
        }
        else                        // 不同天
        {
          if (dt0.Hour >= endHour)
          {
           dt0 = dt0.AddDays(1);
           dt0 = new DateTime(dt0.Year, dt0.Month, dt0.Day, startHour, 0, 0);
           return Diff(dt0, dt1);
          }
          if (dt1.Hour < startHour)
          {
           dt1 = dt1.AddDays(-1);
           dt1 = new DateTime(dt1.Year, dt1.Month, dt1.Day, endHour  , 0, 0);
           return Diff(dt0, dt1);
          }
          DateTime dt0End   = new DateTime(dt0.Year, dt0.Month, dt0.Day, endHour  , 0, 0);
          DateTime dt1Start = new DateTime(dt1.Year, dt1.Month, dt1.Day, startHour, 0, 0);
          return 
           (dt0End - dt0).TotalMinutes
           + (dt1 - dt1Start).TotalMinutes 
           + ((dt1.Date - dt0.Date).Days - 1) * (endHour - startHour) * 60;
        }
      }
    }
      

  7.   

    using System;class Test
    {
      static void Main()
      {
        DateTime dt0 = new DateTime(2008, 6, 12, 23,  3, 12);
        DateTime dt1 = new DateTime(2008, 6, 14, 22, 13, 48);
        Console.WriteLine(Diff(dt0, dt1));
      }
      
      static int startHour = 8;     // 忙时开始的小时值
      static int endHour   = 23;    // 忙时结束的小时值
      
      static double Diff(DateTime dt0, DateTime dt1)
      {
        if (dt0 >= dt1) return 0;
        if (dt0.Hour < startHour || dt0.Hour >= endHour)
        {
          if (dt0.Hour >= endHour) dt0 = dt0.AddDays(1);
          dt0 = new DateTime(dt0.Year, dt0.Month, dt0.Day, startHour, 0, 0);
        }
        if (dt1.Hour < startHour || dt1.Hour >= endHour)
        {
          if (dt1.Hour < startHour) dt1 = dt1.AddDays(-1);
          dt1 = new DateTime(dt1.Year, dt1.Month, dt1.Day, endHour, 0, 0);
        }
        if (dt0.Date == dt1.Date)   // 同一天
        {
          return (dt1 - dt0).TotalMinutes;
        }
        else                        // 不同天
        {
          DateTime dt0End   = new DateTime(dt0.Year, dt0.Month, dt0.Day, endHour  , 0, 0);
          DateTime dt1Start = new DateTime(dt1.Year, dt1.Month, dt1.Day, startHour, 0, 0);
          return 
           (dt0End - dt0).TotalMinutes
           + (dt1 - dt1Start).TotalMinutes 
           + ((dt1.Date - dt0.Date).Days - 1) * (endHour - startHour) * 60;
        }
      }
    }
      

  8.   

    顶了
    学了
    wuyi8808对了
      

  9.   

    wuyi8808  强人+好人,呵呵!
      

  10.   

            private void Test(DateTime dtStart, DateTime dtEnd, DateTime dt8, DateTime dt23)
            {
                TimeSpan ts1 = dt8 - dtStart;
                TimeSpan ts2 = dtStart23 - dtEnd;            TimeSpan tSpan = dtEnd - dtStart;
                if (ts1.TotalMinutes > 0)
                    tSpan -= ts1;
                if (ts2.TotalMinutes > 0)
                    tSpan -= ts2;
            }对两头的时间差进行下处理就可以了
      

  11.   


     if (dt0.Date == dt1.Date)   // 同一天
        {
          return (dt1 - dt0).TotalMinutes;
        }
    要调到  return 0 ,的后面,要么当天的结果是错误的,呵!
      

  12.   

    string dateDiff=null;
     TimeSpan ts1=new   TimeSpan(DateTime1.Ticks);
     TimeSpan ts2=new   TimeSpan(DateTime2.Ticks);
     TimeSpan ts=ts1.Subtract(ts2).Duration();
     dateDiff=ts.Days.ToString()+"天"
     +ts.Hours.ToString()+"小时"
     +ts.Minutes.ToString()+"分钟"
     +ts.Seconds.ToString()+"秒";
               这样可以算时间差,然后剩下的你就可以根据时间差去判断了。