【发布时间】:2020-10-02 12:12:09
【问题描述】:
我正在尝试计算两次之间的时间差。
但我没有得到预期的结果,事实上相同的功能 给我带来了两种不同的结果。
14:22:00 到 22:57:48 之间的时间应为 8 小时 35 分 48 秒。 但是我得到了两个不同的数字。
如果我将值存储为日期,我会得到 14:19:12 如果我在旅途中在 msgbox 中计算,我会得到 8,5966...
两者都不正确,或者它使用了某种我不知道的格式。 屏幕截图显示了 msgbox 和存储测试。 也在预期结果中发布。
有什么建议吗?
Public Sub DDtest()
Dim EDay As Date
Dim ETime As Date
Dim DtgA As Date
EDay = Format(CDate(Replace(Worksheets("Data2020").Range("E2").Value, ".", "/")), "dd-mmm-yyyy")
ETime = Format(Worksheets("Data2020").Range("F2"), "hh:mm:ss")
DtgA = EDay + ETime
Dim EDay2 As Date
Dim ETime2 As Date
Dim DtgB As Date
EDay2 = Format(CDate(Replace(Worksheets("Data2020").Range("E3").Value, ".", "/")), "dd-mmm-yyyy")
ETime2 = Format(Worksheets("Data2020").Range("F3"), "hh:mm:ss")
DtgB = EDay2 + ETime2
Dim result As Date
result = Format(DateDiff("s", DtgA, DtgB) / (60 * 60), "hh:mm:ss")
MsgBox "Date 1:" & DtgA & vbNewLine & "Date 2:" & DtgB & vbNewLine & vbNewLine & DateDiff("s", DtgA, DtgB) / (60 * 60) & vbNewLine & result
End Sub
【问题讨论】:
-
请永远不要将您的代码发布为图像。编辑您的问题并复制/粘贴您的代码。
-
添加到@FoxfireAndBurnsAndBurns cmets,
E2, F2, E3,F3范围内的值是多少? -
已添加代码.. E 列只是日期,即在本例中为 12.12.2019,然后我替换为 -,因为它不适用于 .作为分隔符,转换为日期和格式。 F列,是时间..
-
但问题是为什么 DateDiff 使用相同的数字给出两个不同的结果。
-
8.5966 小时似乎与您正在寻找的答案有关。由于日期以数字形式存储,整数表示从 1900 年 1 月 1 日开始的天数,小数部分是一天的一部分,因此一天的 0.5966 部分(格式化为时间)在下午 2 点之后为您提供。跨度>