使用ActiveSupport从utc转换为ruby对象

时间:2012-02-11 22:51:41

标签: ruby activeresource

这似乎是一个简单的问题,但我似乎无法找到答案。我有UTC时间(即1323481111),我想在ruby脚本中将其更改为DateTime或TimeWithZone对象。我还没有找到一种方法来处理ruby,但我相信应该有一种方法可以使用ActiveSupport来实现。在我看来,我应该能够做到如下:

require "active_support/all"

Time.zone.at(1323481111)

http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html

但这似乎不起作用。有人知道如何将utc int转换为datetime对象吗?

2 个答案:

答案 0 :(得分:2)

究竟什么“似乎不起作用”?你得到像NoMethodError: undefined method 'at' for nil:NilClass这样的例外吗?如果是,请确保已安装tzinfo gem并且还需要tzinfo。然后设置一个时区,你很高兴:

>> Time.zone.at(1323481111)
NoMethodError: undefined method 'at' for nil:NilClass
[..]
>> require 'tzinfo' #=> true
>> Time.zone = "Vienna" #=> "Vienna"
>> Time.zone.at(1323481111) #=> Sat, 10 Dec 2011 02:38:31 CET 01:00

答案 1 :(得分:1)

没有(或使用)ActiveSupport:

require 'date'
DateTime.strptime("1323481111",'%s')  

如果您想将时区设置为UTC之外的其他区域,请转到@Michael Kohl的回答。