将日期转换为 UNIX 时间戳 excel vba



>我找到了一个UDF,可以将该日期转换为UNIX时间戳

Sub Test()
Debug.Print ToUnix("03/01/2012")  '1325548800
End Sub
Public Function ToUnix(dt) As Long
ToUnix = DateDiff("s", "1/1/1970", dt)
End Function

结果1325548800在即时窗口中

我有雅虎财经的这个网址 链接

如果您看到过滤器选项,您将找到日期 3/1/2012 (3 Jan 2012),在 url 中,您将找到 unix 时间戳1325566800这与 udf 的结果几乎没有区别 如何获得提供的 URL 中存在的相同 unix 时间戳?

这两个时间戳正好相隔 5 小时。我希望雅虎财经与您正在使用的系统处于不同的时区。如果雅虎财经是您唯一关心的网站,那么您只需在函数输出中添加 18000 秒,尽管当夏令时在 11 月结束时,这种情况很可能会改变。

VBA将计算您自己时区中日期之间的差异。这仅等于 UTC 时区中的 Unix 日期。您可以通过在即时窗口中执行来测试这一点。

print datediff("s", "1/1/1970", date) mod 86400

86400 是一天中的秒数,余数为 0,这意味着计算是从当地时间 1970 年 1 月 1 日午夜到今天午夜。如果你把剩下的雅虎时间,

print 1325566800 mod 86400

结果是 18000,这是 5 小时内的秒数。所以雅虎服务器处于时区UTC-5。雅虎财经在纽约市,冬季仅比UTC晚5小时。从 3 月到 11 月,它比 UTC 晚四个小时,因为纽约市遵守夏令时。

但是,为了保持一致性,我怀疑它们的时间戳都是 UTC-5,因为最近的任何测试运行都会显示 UTC-4。我对你的警告是观察当纽约市在 11 月从夏令时间切换到标准时间时会发生什么,以防万一。

最新更新