Как изменить временную метку Unix на человеческую дату в рельсах 3

Я видел пару сообщений, выполняющих обратное для mysql, но я ищу способ изменить временную метку unix на удобочитаемую дату (в идеале такую, формат которой я могу изменить), и я не смог найти что-нибудь до сих пор.

Я сохраняю дату, извлеченную из XML-канала, через NokoGiri (в Rails 3.1.1) как часть хеша:

'date' => i.xpath('@unix-timestamp')

который получает число в порядке, но как, черт возьми, вы делаете это ДД-ММ-ГГГГ, чтобы поместить его в одно из моих представлений?

Я пробовал Time.at( (i.xpath('@unix-timestamp') ) безрезультатно; я просто получаю сообщение об ошибке "не могу преобразовать Nokogiri::XML::NodeSet в точное число", и теперь я ударился о стену

Большая благодарность за любую помощь!


person josh    schedule 04.01.2012    source источник


Ответы (2)


Time.at определенно является вызовом, который должен работать для преобразования времени эпохи в рубиновый объект Time (см. ">здесь для примера). Так что, похоже, вам нужно поработать над преобразованием вашего XML-результата во что-то более пригодное для использования. Я думаю, вы хотите попробовать использовать NodeSet#text, чтобы получить строковый вывод, а затем преобразование его в целое число:

Time.at(i.xpath('@unix-timestamp').text.to_i)

В блоге Engineyard есть хорошее, но базовое руководство по NokoGiri.

person muffinista    schedule 04.01.2012
comment
Не уверен, что вам также нужна помощь со второй половиной (преобразование Time в определенный удобочитаемый формат, но для этого есть .strftime, и здесь есть хорошая ссылка для него: strfti.me - person MrTheWalrus; 05.01.2012

Вы можете использовать как: DateTime.strptime("1373210218",'%s')

а еще Time.at(1373210218).strftime("%B %e, %Y at %I:%M %p")

person harsh4u    schedule 15.07.2013