我遇到了问题。如何获得总时数?显示的输出不是我一直期待的总和。这是SS,所以你们可以得到图片。
我只需要总小时部分。谢谢。
以下是获取总工时的代码。
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
答案 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)