2014-01-21 2 views
2

У меня есть var, на мой взгляд, возвращение даты и времени из записи базы данных datetime в формате UTC. Выходной сигнал выглядит так: 2014-01-21 03:13:59 UTCКак отформатировать время и дату из db: запись в формате datetime в Rails 4?

Как отформатировать это? Date.parse(var) даст #=> Tue, 21 Jan 2014 в IRB, но ошибку типа в РЕЛЬСАХ 4: «нет неявного преобразования ActiveSupport :: TimeWithZone в строку»

я в конечном счете, хотел бы отобразить только дату; отформатирован как: %m/%d/%Y Мой единственный вариант не может быть: to_s и regex это право? Кто-нибудь, пожалуйста, покажите мне путь RAILS.

ответ

2

Использование Date#strftime:

Date.parse('2014-01-21 03:13:59 UTC').strftime('%m/%d/%Y') 
# => "01/21/2014" 

Если var является TimeWithZone объектом, просто вызовите TimeWithZone#strftime method:

var.strftime('%m/%d/%Y') 
+0

Я пробовал это. Это заставляет мою голову вращаться. Я возвращаюсь: «нет неявного преобразования ActiveSupport :: TimeWithZone в String» – fyz

+0

И что я называю 'to_s' на var, я возвращаюсь: Недействительная дата – fyz

+0

По второму предложению я возвращаюсь: undefined method' strftime 'для nil: NilClass – fyz

0

Я считаю, что путем рельсов является именем этого формата в инициализаторе и к использовать to_formatted_s (или его псевдоним to_s):

# in config/initializers/date_time_formats.rb 
Time::DATE_FORMATS.merge!(
    date_us: '%m/%d/%Y' 
) 
Date::DATE_FORMATS.merge!(
    date_us: '%m/%d/%Y' 
) 

Чтобы использовать этот формат на ваш взгляд:

<%= @object.date.to_s(format: :date_us) %> 

Это позволяет повторно использовать этот формат имени в приложении без перезаписи сложного strftime строки. Вы можете добавить несколько разных форматов и иметь одно место в своем приложении, чтобы изменить существующий формат.

Если вы собираетесь локализовать свое приложение на разные языки, вы можете захотеть сохранить эти форматы в своих файлах yml. Это позволяет использовать разные форматы в зависимости от местоположения пользователя. Узнайте больше об этом в Rails Guide about I18n

Смежные вопросы