Rails 3 формат даты и времени по умолчанию без UTC - PullRequest
47 голосов
/ 12 сентября 2010

Я создаю новое приложение Rails 3, и в нем я использую DateTime для пары полей, однако за каждым стандартом поля даты и времени стоит UTC (в виде), например:

2010-10-10 16:19:00 UTC

Как мне избавиться от части UTC?

ОБНОВЛЕНИЕ: вот что у меня есть:

<%= trip.truckleft.strftime("%Y-%m-%d %H:%M") %>

Так что все, что мне нужно сейчас сделать, это поместить это в помощника, но разве нет лучшего, более универсального способа?

Я просмотрел некоторые другие посты, в которых предлагалось создать time_formats.rb в инициализаторах, однако я не добился успеха в этом.

Спасибо за вашу помощь, высоко ценится!

Ответы [ 6 ]

64 голосов
/ 11 декабря 2010

Другой - возможно, теперь предпочтительный - способ использования Поддержка интернационализации и локализации Rails .В этом руководстве есть чему поучиться, поэтому версия tl; dr такова:

<%= l trip.truckleft, :format => :long %>

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * USдля английского, и вы можете добавить свой собственный в config/locales/en.yml, следуя структуре YAML в этих примерах.Если вы еще не вникаете во все аспекты i18n / l10n и постоянно смотрите на метод l, вы также можете использовать:

<%= trip.truckleft.to_formatted_s(:long) %>
42 голосов
/ 18 сентября 2010

Вот что в итоге сработало для меня:

Я создал новый файл в:

config/initializers/

с именем: time_formats.rb

и добавил это к этому файлу:

Time::DATE_FORMATS[:default] = "%Y-%m-%d %H:%M"

Затем я сохранил, перезапустил сервер, и он начал работать.

26 голосов
/ 29 декабря 2010

Я использую i18n для форматирования своих дат и имею это в en.yml:

date:
  formats:
    default: "%m/%d/%Y"

Я хотел повторно использовать этот формат для отображения моделей датами, поэтому мой config / initializers / time_formats.rb содержит это:

Date::DATE_FORMATS[:default] = lambda { |date| I18n.l(date) }
14 голосов
/ 30 июня 2011

Точнее, вы должны поместить их в свои инициализаторы:

Date::DATE_FORMATS[:default] = "%m-%d-%Y"
Time::DATE_FORMATS[:default] = "%m-%d-%Y %H:%M"

При наличии даты и времени второй будет работать (например, созданный для моделей).

1 голос
/ 13 марта 2013

для рельсов 3

добавить к config/environment.rb

my_datetime_formats = { :default => '%F %T' } #or any other you like
my_date_formats = { :default => '%F' } #or any other you like

Time::DATE_FORMATS.merge!(my_datetime_formats)
Date::DATE_FORMATS.merge!(my_date_formats)

(отличие от других ответов - это merge! метод)

1 голос
/ 12 сентября 2010

Вы можете поместить следующую строку в конец вашего config/environment.rb файла:

Date::DATE_FORMATS[:default] = "%Y-%m-%d %H:%M"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...