对DataGridView中每行的所有Timespan求和

时间:2015-10-19 06:23:30

标签: c# datetime datagridview timespan

这是我的前端,在我的情况下,我想在datagridview中添加所有行的总时间和时间。我的datagridview字段是id,员工代码,日期,时间和超时。

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

2 个答案:

答案 0 :(得分:0)

您的代码如下所示,数组timein [] timeout []是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];
            }​

答案 1 :(得分:0)

您可以在数据库中执行此操作,然后将timepans的总和作为列返回。那会更好,也更容易。

相关问题