【发布时间】:2017-09-10 04:18:17
【问题描述】:
我正在从 Mixpanel 导出一些数据并尝试读取时间戳。但是,Mixpanel 以 UTC 以外的方式发送时间戳。
混合面板文档
时间戳以自 1970 年 1 月 1 日以来的秒数表示在您项目的时区中,而不是 UTC 作为真正的纪元时间戳。例如,如果您的项目设置为太平洋时间,您需要添加8 小时(如果不是夏令时,则为 7 小时)(60 分钟 * 60 秒 * 8 小时)到时间戳,以便将此时间戳转换为 UTC。这意味着使用许多纪元转换器转换原始导出的时间戳将导致表示时间的偏移量不正确。
示例
1492100624 是来自 mixpanel 的时间戳,它对应于 04/13/2017 @ 4:23pm (Central Time US)。如果我使用Time.at 解析时间戳,它假定时间戳是UTC。
irb(main):001:0> Time.at 1492100624
=> 2017-04-13 11:23:44 -0500
irb(main):002:0> Time.at(1492100624).utc
=> 2017-04-13 16:23:44 UTC . # correct time in the wrong timezone
根据他们的文档手动添加 7 或 8 小时似乎容易出错,具体取决于时间戳是在夏令时之前还是之后。再说一次,时区令人困惑,所以我可能会比看起来更难!
我应该如何正确读取这些时间戳,以便在 UTC 中对它们进行操作?
注意:我没有使用导轨。我怎样才能在香草 Ruby 中做到这一点?
【问题讨论】:
-
它是一个 Rails 应用程序还是你用纯红宝石做的?
-
不是 rails,普通的原版 ruby 脚本 - 添加到问题中。
-
_.utc 在您的示例中为您提供了错误时区的正确时间。
-
是的,这是我的错误。我提交我的解决方案。希望对你有帮助