Ruby-从微秒获得日期

时间:2012-08-09 03:05:56

标签: ruby google-chrome history

好吧我在python中看这个,但我更喜欢红宝石。我想要做的是从这个数字得到一个日期和时间 - 12988822998637849 - 这是自1601年1月1日以来的微秒数。这就是Chrome存储它的时间戳的方式,我已经在python中看到了很多方法,但我对ruby更加满意,我不知道如何开始这样做。 (这次我的Google-Fu没有帮助我) 请注意,此示例编号来自几天前。我会接受任何帮助。谢谢!

2 个答案:

答案 0 :(得分:5)

查看Time.at

Windows文件时间是“64位值,表示自公元1601年1月1日午夜12点(美国时间)协调世界时(UTC)以来经过的100纳秒间隔的数量。” Ref.

相比之下,Ruby存储时间与Unix相同:“时间存储在内部,自1970年1月1日00:00 UTC世界时代以来的秒数和微秒数”Ref.

# 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"

答案 1 :(得分:1)

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

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

# => 2012-08-07 14:23:18 UTC