Использование ActiveSupport для преобразования из utc в объект ruby - PullRequest
1 голос
/ 12 февраля 2012

Это кажется простой проблемой, но я не могу найти ответ. У меня есть время UTC (т.е. 1323481111), и я хочу изменить его на объект DateTime или TimeWithZone в сценарии ruby. Я не нашел способа сделать это только с помощью ruby, но я считаю, что должен быть способ сделать это с помощью ActiveSupport. Мне кажется, что я смогу сделать это следующим образом:

require "active_support/all"

Time.zone.at(1323481111)

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

Но это не похоже на работу. Кто-нибудь знает, как преобразовать utc int в объект datetime?

Ответы [ 2 ]

2 голосов
/ 12 февраля 2012

Что именно означает "не работает"?Вы получаете исключение как NoMethodError: undefined method 'at' for nil:NilClass?Если да, убедитесь, что у вас установлен tzinfo гем, а также требуется 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 голос
/ 12 февраля 2012

Без (или с) ActiveSupport:

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

Если вы хотите установить для часового пояса нечто иное, чем UTC, тогда ответьте @Michael Kohl.

...