Форматирование меток времени - PullRequest
19 голосов
/ 29 марта 2009

Как вы форматируете временные метки Rails в более понятном для человека формате? Если я просто напечатаю created_at или updated_at на мой взгляд, как это:

<% @created = scenario.created_at %>

Тогда я получу:

2009-03-27 23:53:38 UTC

Ответы [ 6 ]

22 голосов
/ 29 марта 2009

Функции strftime (от Ruby's Time) и to_formatted_s (от Rails 'ActiveSupport) должны быть в состоянии удовлетворить все ваши потребности в форматировании времени.

7 голосов
/ 28 апреля 2011

Взгляните на функциональность I18n. Это позволяет вам делать следующее в ваших представлениях:

<code><%= localize(scenario.created_at, :format => :long) %>

где форматы определены в ваших локалях. Подробнее

6 голосов
/ 22 мая 2012

Также

<%= l scenario.created_at, :format => :sample) %>

А в locales / en.yml (в зависимости от языка)

  en:
    time:
      formats:
        sample: '%d.%m.%Y'

Чтобы узнать больше, см. - http://guides.rubyonrails.org/i18n.html

4 голосов
/ 28 апреля 2011

Time.now (). To_i прекрасно работает. Для обратного преобразования используйте Time.at (аргумент)

0 голосов
/ 08 марта 2017

Вы можете использовать strftime для форматирования метки времени разными способами. Я предпочитаю some_data[:created_at].strftime('%F %T'). %F показывает «2017-02-08» (календарная дата продлена), а %T показывает «08:37:48» (местное время продлено).

В случае проблем с часовыми поясами добавьте эти строки в файл config/application.rb

config.time_zone = 'your_timezone_string'
config.active_record.default_timezone = :local
0 голосов
/ 18 сентября 2015

Вы должны изменить файл метки времени, в моем случае этот файл находится в /usr/local/rvm/gems/ruby-2.0.0-p195/gems/activerecord-4.2.0/lib/active_record/timestamp.rb. Вы должны найти эту строку:

self.class.default_timezone == :utc ? Time.now.utc : Time.now

и измените его на:

self.class.default_timezone == :utc ? Time.now.utc : Time.now.strftime('%Y-%m-%d %H-%M-%S')

Хитрость в том, чтобы изменить формат с помощью метода strftime, вы можете изменить формат, если хотите.

Теперь rails будет использовать ваш формат для обновления столбца updated_at.

...