Подтвердить что ты не робот

Форматирование временных меток

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

<% @created = scenario.created_at %>

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

2009-03-27 23:53:38 UTC

4b9b3361

Ответ 1

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

Ответ 2

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

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

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

Ответ 3

Кроме

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

И в локалях /en.yml(в зависимости от языка)

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

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

Ответ 4

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

Ответ 5

Вы можете использовать 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

Ответ 6

вам нужно изменить файл метки времени, в моем случае этот файл находится в /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, вы можете изменить формат, если хотите.

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