如何获得总时数

时间:2014-02-10 03:05:31

标签: vb.net vb.net-2010

我遇到了问题。如何获得总时数?显示的输出不是我一直期待的总和。这是SS,所以你们可以得到图片。

enter image description here

我只需要总小时部分。谢谢。

以下是获取总工时的代码。

    Dim d1 As DateTime
    Dim d2 As DateTime
    Dim ts1 As TimeSpan
    Dim ts2 As TimeSpan
    Dim ts3 As TimeSpan
    Dim ts4 As TimeSpan
    Dim ts5 As TimeSpan
    Dim ts6 As TimeSpan
    Dim tsFinal As TimeSpan

    d1 = DateTime.Parse(txtTimeIn1.Text)
    d2 = DateTime.Parse(txtTimeOut1.Text)
    ts1 = d2 - d1
    txtTotalHr1.Text = (ts1.ToString)

    d1 = DateTime.Parse(txtTimeIn2.Text)
    d2 = DateTime.Parse(txtTimeOut2.Text)
    ts2 = d2 - d1
    txtTotalHr2.Text = (ts2.ToString)

    d1 = DateTime.Parse(txtTimeIn3.Text)
    d2 = DateTime.Parse(txtTimeOut3.Text)
    ts3 = d2 - d1
    txtTotalHr3.Text = (ts3.ToString)

    d1 = DateTime.Parse(txtTimeIn4.Text)
    d2 = DateTime.Parse(txtTimeOut4.Text)
    ts4 = d2 - d1
    txtTotalHr4.Text = (ts4.ToString)

    d1 = DateTime.Parse(txtTimeIn5.Text)
    d2 = DateTime.Parse(txtTimeOut5.Text)
    ts5 = d2 - d1
    txtTotalHr5.Text = (ts5.ToString)

    d1 = DateTime.Parse(txtTimeIn6.Text)
    d2 = DateTime.Parse(txtTimeOut6.Text)
    ts6 = d2 - d1
    txtTotalHr6.Text = (ts6.ToString)

    tsFinal = ts1 + ts2 + ts3 + ts4 + ts5 + ts6
    txtTotalWorkHour.Text = tsFinal.ToString

2 个答案:

答案 0 :(得分:0)

试试这个

Function GetTotalTime() As TimeSpan
        Dim count As TimeSpan = TimeSpan.Zero
        For Each x As DataGridViewRow In Table.Rows
            count += TimeSpan.Parse(x.Cells(columnIndex).Value)

        Next
        Return count
End Function


'elsewhere
Dim hrs As Integer = GetTotalTime().Hours

答案 1 :(得分:0)

您有格式问题。默认的TimeSpan ToString格式为d.hh:mm:ss,其中d为天。所以2:11:03:00表示2天,11小时和3分钟。我假设你想要59:03:00,意思是59小时(24 * 2 + 11)和3分钟。要完成此操作,请使用以下格式:

txtTotalWorkHour.Text = String.Format("{0:n0}:{1:d2}:{2:d2}", tsFinal.TotalHours, tsFinal.Minutes, tsFinal.Seconds)