C# - Duration between two DateTimes in minutes

后端 未结 9 1073
醉话见心
醉话见心 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:15

    It was a pretty hard question. For a basic, in a straightforward approach, I have written the below code:

    DateTime start = new DateTime(2010, 01, 01, 21, 00, 00);
    DateTime end = new DateTime(2010, 10, 01, 14, 00, 00);
    
    // Shift start date's hour to 7 and same for end date
    // These will be added after doing calculation:
    double startAdjustmentMinutes = (start - start.Date.AddHours(7)).TotalMinutes;
    double endAdjustmentMinutes = (end - end.Date.AddHours(7)).TotalMinutes;
    
    // We can do some basic
    // mathematical calculation to find weekdays count:
    // divide by 7 multiply by 5 gives complete weeks weekdays
    // and adding remainder gives the all weekdays:
    int weekdaysCount = (((int)((end.Date - start.Date).Days / 7) * 5) 
              + ((end.Date - start.Date).Days % 7));
    // so we can multiply it by minutes between 7am to 7 pm
    int minutes = weekdaysCount * (12 * 60);
    
    // after adding adjustment we have the result:
    int result = minutes + startAdjustmentMinutes + endAdjustmentMinutes;
    

    I know this not seem programmatically beautiful but I don't know if it is good to iterate through days and hours between start and end.

提交回复
热议问题