【发布时间】:2021-11-16 06:13:24
【问题描述】:
我正在尝试将时间戳1624373961042 格式化为日期,但我在下面尝试的方式总是给我overflow 错误。我期待从那个时间戳得到这个日期2021-06-22。我怎样才能使它成为可能?
Sub getDate()
Dim tDate As Long, timestamp As String
timestamp = "1624373961042"
tDate = Int(timestamp) / 1000
MsgBox Format(tDate, "yyyymmdd")
End Sub
【问题讨论】:
-
Int返回数字的整数部分,您应该使用Cint或在这种情况下使用CLng以避免溢出。 -
你需要做:
tDate = Clng(cdbl(timestamp)/84600000+2569)timstamp 是自 1970 年 1 月 1 日以来的毫秒数。自 1899 年 12 月 31 日以来的 Excel 天数。 -
对不起应该是:
tDate = Clng(cdbl(timestamp)/84600000+25569) -
请注意:CLng 会将日期四舍五入。您可以返回 INT,它将截断小数而不进行四舍五入。
-
抱歉应该是:
tDate = INT(cdbl(timestamp)/86400000+25569)我把 4 和 6 颠倒了。