Ответ 1
strftime
(из Ruby Time) и to_formatted_s
(из Rails ActiveSupport) функции должны иметь возможность обрабатывать все ваши потребности в форматировании времени.
Как вы форматируете метки времени Rails в более удобном для восприятия формате? Если я просто распечатаю created_at
или updated_at
в своем представлении следующим образом:
<% @created = scenario.created_at %>
Тогда я получу:
2009-03-27 23:53:38 UTC
strftime
(из Ruby Time) и to_formatted_s
(из Rails ActiveSupport) функции должны иметь возможность обрабатывать все ваши потребности в форматировании времени.
Взгляните на функциональность I18n. Это позволяет вам сделать следующее в ваших представлениях:
<%= localize(scenario.created_at, :format => :long) %>
где форматы определены в ваших локалях. Дополнительная информация
Кроме
<%= l scenario.created_at, :format => :sample) %>
И в локалях /en.yml(в зависимости от языка)
en:
time:
formats:
sample: '%d.%m.%Y'
Чтобы узнать больше, см. http://guides.rubyonrails.org/i18n.html
Time.now(). to_i отлично работает. Для обратного преобразования используйте Time.at(аргумент)
Вы можете использовать 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
вам нужно изменить файл метки времени, в моем случае этот файл находится в /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".