【问题标题】:Convert date to UNIX timestamp excel vba将日期转换为 UNIX 时间戳 excel vba
【发布时间】:2019-07-19 21:53:12
【问题描述】:

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

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

我有这个雅虎财经的网址 LINK

如果您看到过滤器选项,您会发现日期 3/1/2012(2012 年 1 月 3 日),在 url 中您会发现 unix 时间戳 1325566800,这与 udf 的结果略有不同 如何获得提供的 URL 中存在的相同 unix 时间戳?

【问题讨论】:

    标签: excel vba unix


    【解决方案1】:

    这两个时间戳正好相隔 5 小时。我希望雅虎财经与您正在使用的系统处于不同的时区。如果 Yahoo Finance 是您唯一关心的网站,那么您可以简单地在函数的输出中添加 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 时区。使用纽约市的雅虎财经,它在冬季仅比世界标准时间晚 5 小时。从 3 月到 11 月,由于纽约市实行夏令时,因此比 UTC 晚了四个小时。

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

    【讨论】:

    • 非常感谢。我对您回答的最后一部分感到困惑,“当夏令时在 11 月结束时,这很可能会改变。”在这种情况下,我只是关于雅虎的情况.. 我的工作表上有日期,我想转换为 UNIX,以与雅虎 URL 上的完全相同
    • @YasserKhalil - UNIX 时间戳不关心夏令时,但您的功能是基于时钟的。在某些时候,您将不得不寻找另一个时间来源,或者只是补偿。
    • @YasserKhalil 我为答案添加了一些进一步的解释。
    猜你喜欢
    • 2012-09-01
    • 1970-01-01
    • 2020-10-19
    • 2020-12-23
    • 2016-04-24
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多