Формат даты и времени по умолчанию для Rails 3 без UTC - программирование
Подтвердить что ты не робот

Формат даты и времени по умолчанию для 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 в инициализаторах, однако я не имел никакого успеха в этом.

Спасибо за вашу помощь, очень благодарен!

4b9b3361

Ответ 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!)