c#中计算时差的正确方法

Proper way to calculat time difference in c#

我正在计算一个工人的加班时间。我已经将数据加载到 datagridview 中。我将列命名为 startot(第 5 位)和 endot(第 6 位)。 这是我计算持续时间的代码

 TimeSpan duration = new TimeSpan();
 foreach (DataGridViewRow row in attenViewGrid.Rows)
 {
     string start = row.Cells[5].Value.ToString();
     string end = row.Cells[6].Value.ToString();
     duration += DateTime.Parse(end).Subtract(DateTime.Parse(start));
  }

现在我遇到了加班时间 10:00 到第二天 9:00am 的问题。什么是计算持续时间的最佳方法。

您应该在 table 单元格中指定日期和时间,当您通过解析时间字符串创建日期时间对象时,它会设置一个固定日期。

否则,您可以设置一天增量的条件:

 TimeSpan duration = new TimeSpan();
 foreach (DataGridViewRow row in attenViewGrid.Rows)
 {
     string start = row.Cells[5].Value.ToString();
     string end = row.Cells[6].Value.ToString();

     if(DateTime.Parse(end).Compare(DateTime.Parse(start)) < 0) 
         duration += Timespan.FromDays(1);

     duration += DateTime.Parse(end).Subtract(DateTime.Parse(start));
  }