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

时间:2018-07-12 07:20:22

标签: c# visual-studio winforms visual-studio-2010

我正在计算一个工人的加班时间。我已经将数据加载到datagridview中。我已将column命名为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:00时,我将面临问题。在一段时间内进行计算的最佳方法是什么。

1 个答案:

答案 0 :(得分:1)

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

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

 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));
  }