2015-10-19 43 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