excel 通过将总秒数除以3600计算小时数

2ledvvac  于 2023-01-21  发布在  其他
关注(0)|答案(1)|浏览(185)

我正在尝试计算班次结束时间到第二天时的总工作小时数。
tHours不正确。预期结果应为12,但实际结果为11。
sShift = 08:00 PM(开始轮班)
eShift =上午08:00(结束轮班)-〉第二天

Time1 = CDate(sShift.Text)
Time2 = CDate(eShift.Text)
                    
If (Time2 <= Time1) Then
    Total_Seconds = (Time2 + 1 - Time1) * 24 * 3600
Else
    Total_Seconds = (Time2 - Time1) * 24 * 3600
End If

tMins = Int((Total_Seconds Mod 3600) / 60)

tHours = Int(Total_Seconds / 3600)

Total_Seconds 43200除以3600应得到12。但tHours显示为11。

fslejnso

fslejnso1#

这个问题很可能是由浮点错误引起的。这个article说明了这一点。
在这种情况下,我建议修正您的计算,使用

If (time2 <= time1) Then
    total_seconds = (time2 + 1 - time1) * 24 * 3600
Else
    total_seconds = (time2 - time1) * 24 * 3600
End If
total_seconds = CLng(total_seconds)

使用Option Explicit也是一种很好的做法。

相关问题