C# - Duration between two DateTimes in minutes

后端 未结 9 1087
醉话见心
醉话见心 2020-12-16 11:58

I need to determine duration between two DateTimes in minutes.

However, there is a slight twist:

  • exclude weekends
  • only count minutes which a
9条回答
  •  余生分开走
    2020-12-16 12:13

    I'm sure there's something I missed.

      TimeSpan CalcBusinessTime(DateTime a, DateTime b)
      {
         if (a > b)
         {
            DateTime tmp = a;
            a = b;
            b = tmp;
         }
    
         if (a.TimeOfDay < new TimeSpan(7, 0, 0))
            a = new DateTime(a.Year, a.Month, a.Day, 7, 0, 0);
         if (b.TimeOfDay > new TimeSpan(19, 0, 0))
            b = new DateTime(b.Year, b.Month, b.Day, 19, 0, 0);
    
         TimeSpan sum = new TimeSpan();
         TimeSpan fullDay = new TimeSpan(12, 0, 0);
         while (a < b)
         {
            if (a.DayOfWeek != DayOfWeek.Saturday && a.DayOfWeek != DayOfWeek.Sunday)
            {
               sum += (b - a < fullDay) ? b - a : fullDay;
            }
            a = a.AddDays(1);
         }
    
         return sum;
      } 
    

提交回复
热议问题