Изменить формат созданного в Rails 3.1? - PullRequest
26 голосов
/ 10 сентября 2011

Я называю дату, когда была создана запись в базовом приложении, работающем с Rails 3.1.

<%= @issue.created_at %>

Выше приведены следующие временные метки:

2011-09-10 14:44:24 UTC

Какой самый простой способ изменить способ отображения? Я хотел бы что-то вроде этого:

10 Sept. 2011

и затем как-нибудь вызвать его снова в другом формате:

14:44

так что я могу позвонить дважды и объединить их вместе:

10 Sept. 2011
14:44

Причина, по которой я хочу вызвать его дважды, а не создавать помощник для форматирования двухстрочной даты / времени, состоит в том, что я могу вызывать дату в некоторых местах и ​​только время в других.

Ответы [ 6 ]

76 голосов
/ 10 сентября 2011

Самое простое, что нужно сделать, это использовать функцию strftime

# Day / Month / Year
@issue.created_at.strftime("%d %b. %Y")
# Hour:Min
@issue.created_at.strftime("%H:%M")

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

13 голосов
/ 10 сентября 2011

Я бы использовал I18n. Взгляните на пример http://guides.rubyonrails.org/i18n.html#adding-date-time-formats. Это простой и гибкий способ форматирования даты и времени.

9 голосов
/ 10 сентября 2011
<%= l(@issue.created_at, :format=>:your_format) %>

в локали YAML (app / config / locale / country_id.yml) вы должны объявить

time:
 formats:
  your_format: '%d %b. %Y'
  your_another_format: '%I:%M'

Форматирование даты должно быть объявлено в вашем файле определения i18n YAML для легкой настройки, а также другую датуформат можно найти здесь

7 голосов
/ 29 мая 2013

Проверьте http://www.foragoodstrftime.com/ для простого способа настроить форматирование даты / времени @ spike

1 голос
/ 06 января 2017

Вы можете сделать:

@issue.created_at.to_date.iso8601

0 голосов
/ 20 марта 2013

to_s также принимает входной аргумент формата:

http://apidock.com/rails/ActiveSupport/TimeWithZone/to_s

...