2

好吧,我在 python 中看这个,但我更喜欢 ruby​​。我想做的是从这个数字获取日期和时间 - 12988822998637849 - 这是自 1601 年 1 月 1 日 UTC 以来的微秒数。这就是 Chrome 存储它的时间戳的方式,我已经看到了很多在 python 中执行此操作的方法,但我对 ruby​​ 更满意,我什至不知道如何开始执行此操作。(我的 Google-Fu 这次没有帮到我)请注意这个示例编号是几天前的。我会尽我所能得到的帮助。谢谢!

4

2 回答 2

5

看看Time.at

Windows 文件时间是“一个 64 位值,表示自公元 1601 年 1 月 1 日午夜 12:00 (CE) 协调世界时 (UTC) 以来经过的 100 纳秒间隔数。” 参考。

相比之下,Ruby 像 Unix 一样存储时间:“时间在内部存储为自纪元 1970 年 1 月 1 日 00:00 UTC 以来的秒数和微秒数”参考。

# This return a Time
Time.at(12988822998637849/1000000-11644473600) # Epoch Diff is 11644473600
# => 2012-08-07 11:23:18 -0300 

# This returns a String
Time.at(12988822998637849/1000000-11644473600).strftime("%Y-%m-%d %H:%M.%S")
# => "2012-08-07 11:23.18"
于 2012-08-09T03:10:57.603 回答
1

您需要做的就是使用 Chrome 时间原点创建一个 Ruby 日期,然后按所需的微秒数递增:

Time.gm(1601,1,1) + 12988822998637849 / 1000000

# => 2012-08-07 14:23:18 UTC
于 2012-08-09T03:24:38.230 回答