Формат даты и времени по умолчанию для Rails 3 без UTC
Я создаю новое приложение Rails 3, и в нем я использую DateTime
для нескольких полей, однако каждый стандарт поля datetime имеет UTC за ним (в представлении), например:
2010-10-10 16:19:00 UTC
Как избавиться от части UTC?
UPDATE: вот что я до сих пор:
<%= trip.truckleft.strftime("%Y-%m-%d %H:%M") %>
Итак, все, что мне нужно сделать, это поставить в помощнике, но нет ли более универсального способа?
Я просмотрел некоторые другие сообщения, которые предполагали создание time_formats.rb
в инициализаторах, однако я не имел никакого успеха в этом.
Спасибо за вашу помощь, очень благодарен!
Ответы
Ответ 1
Другой - возможно, теперь предпочтительный способ - использовать поддержку интернационализации Rails и локализации. В этом руководстве есть чему поучиться, поэтому версия tl; dr такова:
<%= l trip.truckleft, :format => :long %>
Есть несколько предопределенных форматов даты и времени, как :long
, доступных вам уже для английского языка, и вы можете добавить свои собственные в config/locales/en.yml
, следуя структуре YAML в этих примерах. Если вы все еще не сильно ощущаете всю вещь i18n/l10n и все время рассматриваете метод l
, вы также можете использовать:
<%= trip.truckleft.to_formatted_s(:long) %>
Ответ 2
Вот что, наконец, помогло мне:
Я создал новый файл в:
config/initializers/
named: time_formats.rb
и добавил это в этот файл:
Time::DATE_FORMATS[:default] = "%Y-%m-%d %H:%M"
Затем я сохранил, перезапустил сервер и начал работать.
Ответ 3
Я использую i18n для форматирования своих дат и имею это в en.yml:
date:
formats:
default: "%m/%d/%Y"
Я хотел повторно использовать этот формат для того, как модели показывают свои даты, поэтому мои config/initializers/time_formats.rb содержат следующее:
Date::DATE_FORMATS[:default] = lambda { |date| I18n.l(date) }
Ответ 4
Чтобы быть точным, вы должны поместить их в свои инициализаторы:
Date::DATE_FORMATS[:default] = "%m-%d-%Y"
Time::DATE_FORMATS[:default] = "%m-%d-%Y %H:%M"
При наличии даты и времени второй будет работать (например: created_at для моделей).
Ответ 5
Вы можете поместить следующую строку в конец вашего файла config/environment.rb
:
Date::DATE_FORMATS[:default] = "%Y-%m-%d %H:%M"
Ответ 6
для рельсов 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!
)