我需要以小时为单位计算从创建记录到当前时间已经过去了多少时间。困难的部分是我需要排除周末时间。
我已经为此工作了很长一段时间,但我只是迷失了方向。这是我到目前为止所拥有的。预先感谢您的帮助。
Dim MyStartTime As DateTime = "2010-08-09 07:00:00.000"
Dim MyEndTime As DateTime = DateAdd("h", -1, Now())
Dim MyHours As Integer = 0
If Weekday(MyStartTime) > 1 And Weekday(MyStartTime) < 6 Then
MyHours = DateDiff("h", MyStartTime, MyEndTime)
ElseIf Weekday(MyStartTime) = 6 Then
Dim EndTime
date1.Date()
MyHours = DateDiff("h", MyStartTime, MyEndTime)
End If
lblHours1.Text = MyHours
VB.NET 中的哪种算法最适合此计算?
最佳答案
这是一种方法:
确定整个范围的时间跨度(以小时为单位)。
确定开始和结束是否在周末。减去适当的时间。如果从周末开始,请删除周一 00:00 之前的时间。如果在周末结束,则减去自周六 00:00 以来经过的小时数。然后考虑其间的所有完整周末。
这需要实现 3 个方法来返回要减去的小时数。如果没有,则只需在每个上返回 0
:
NumberOfHoursBetweenDateAndNextMonday
- 在周末开始时。
NumberOfHoursBetweenDateAndEarliestSaturday
- 在周末结束时。
NumberOfFullWeekendHoursWithinRange
- 其间的所有天数。
Dim MyHours As TimeSpan = MyEndTime - MyStartTime
'account for start being on a weekend
If (MyStartTime.DayOfWeek = vbSaturday Or vbSunday) Then
'subtract number of hours until Monday at 00:00
MyHours -= NumberOfHoursBetweenDateAndNextMonday(MyStartTime)
End If
If (MyEndTimeTime.DayOfWeek = vbSaturday Or vbSunday) Then
'subtract number of hours elapsed after Saturday at 00:00
MyHours -= NumberOfHoursBetweenDateAndEarliestSaturday(MyEndTime)
End If
MyHours -= NumberOfFullWeekendHoursWithinRange(MyStartTime, MyEndTime)
关于vb.net - 计算从某个日期到当前日期耗时(不包括周末),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3451683/