2015-10-19 25 views
0

这是我的前端,就我而言,我想在我的datagridview中的所有行中添加所有总时间和时间。我的datagridview字段是id,员工代码,日期,时间和超时。DataGridView中每行的所有Timespan的总和

enter image description here

这里是我的后端,在这里我计算的后期,总学时,天差和夜晚的区别。根据我的datagridview上的数据,是否可以在我的文本框中显示总小时数,晚,日差和夜间数据。对不起,我的英语,与你的问题澄清我的问题。

string timeIn = datagridAttendance.CurrentRow.Cells["timeIn"].Value.ToString(); 
string timeOut = datagridAttendance.CurrentRow.Cells["timeOut"].Value.ToString(); 
DateTime tIn = Convert.ToDateTime(timeIn); 
DateTime tOut = Convert.ToDateTime(timeOut); 
TimeSpan span = tOut - tIn; 
txtTotalHours.Text = Convert.ToString(span); 
DateTime start = Convert.ToDateTime(txtStart.Text); 
txtMe.Text = tIn.ToShortTimeString(); 
DateTime inTime = Convert.ToDateTime(txtMe.Text); 
if (inTime > start) 
{ 
    TimeSpan late = inTime - start; 
    txtLate.Text = Convert.ToString(late); 
} 
else 
{ 
    txtLate.Text = "Not Late"; 
} 
TimeSpan passLength = new TimeSpan(0, 0, 0, 1); 
TimeSpan nightTime = new TimeSpan(); 
while (tIn < tOut) 
{ 
    tIn = tIn.Add(passLength); 
    if (tIn.Hour < 6 || tIn.Hour == 23) 
    { 
     nightTime = nightTime.Add(passLength); 
    } 
} 

txtNightDif.Text = Convert.ToString(nightTime); 
TimeSpan day = span - nightTime; 
txtDayDif.Text = Convert.ToString(day); 

回答

0

你的代码看起来像阵列timein []超时[]下面是DataGridView中的每一行中的值

  DateTime[] timein = { DateTime.Parse("1:00"), DateTime.Parse("3:00"), DateTime.Parse("5:00"), DateTime.Parse("7:00") }; 
      DateTime[] timeout = { DateTime.Parse("2:00"), DateTime.Parse("4:00"), DateTime.Parse("6:00"), DateTime.Parse("8:00") }; 

      TimeSpan totalTime = new TimeSpan(); 

      for (int i = 0; i < timein.Count(); i++) 
      { 
       totalTime += timeout[i] - timein[i]; 
      }​ 
0

为此,您可以在您的数据库,然后返回总和时间段作为列。这会更好,更容易。

+0

仅适用于时间范围,但是,对于这种情况,计算日差和夜差是不可能的。 – pruuylan