Часовой пояс с рельсами 3

У меня довольно распространенная проблема, но по какой-то причине я пробовал все предложения в Интернете, и никто, похоже, не работает.

Я установил Timezone в config на «EST»

config.time_zone = 'Eastern Time (US & Canada)' 

Но когда время отображается на экране, оно продолжает показывать время UTC, которое хранится в БД. Я попробовал отладчик, и вот вывод

 (rdb:1) Time.zone #<ActiveSupport::TimeZone:0x1061f4760 @utc_offset=nil, @current_period=nil, @name="Eastern Time (US & Canada)", @tzinfo=#> (rdb:1) Order.first.placed_at Fri Jan 01 15:00:00 UTC 2010 

Обновление: вот еще один пользователь, у которого есть тот же вопрос. Часовой пояс Rails ошибочен, когда отображается

Попробуйте in_time_zone . Например

 >> Time.now => Sun Dec 05 21:34:45 -0500 2010 >> Time.zone => #, @utc_offset=-28800, @current_period=nil> >> Time.now.in_time_zone => Sun, 05 Dec 2010 18:34:54 PST -08:00 

В вашем случае вы хотите Order.first.placed_at.in_time_zone .

Если вы хотите установить другой часовой пояс для разных пользователей вашего приложения , убедитесь, что вы используете round_filter, а не фильтр перед тем, как изменять Time.zone. Что-то связано с тем, как Time.zone просачивается в другие streamи, и, таким образом, другие пользователи могут не создавать часовой пояс, который им не нужно. Из этого сообщения в блоге: http://ilikestuffblog.com/2011/02/03/how-to-set-a-time-zone-for-each-request-in-rails/

в application_controller.rb:

 around_filter :set_time_zone private def set_time_zone old_time_zone = Time.zone Time.zone = current_user.time_zone if logged_in? yield ensure Time.zone = old_time_zone end 

Я также счел полезным использовать метод вспомогательной формы time_zone_select, позволяя пользователям изменять свой часовой пояс. Если вы вызвали свое поле: time_zone, вы бы использовали его как:

 f.time_zone_select(:time_zone) 

И, наконец, это выглядит потрясающе. Автоматическое обнаружение и установка часового пояса через javascript . Вот жемчужина рельсов, чтобы добавить в конвейер активов: https://github.com/scottwater/detect_timezone_rails и сопроводительное сообщение в блоге: http://www.scottw.com/automated-timezone-detection

Убедитесь, что ваш ActiveRecord::Base.time_zone_aware_attributes прав.

Я думаю, что вы описываете эту ошибку – https://github.com/rails/rails/issues/6816

  • Как установить часовой пояс по умолчанию в node.js?
  • Как использовать пользовательское время в браузере для проверки разницы во времени между клиентом и сервером
  • Как получить текущую дату и время вашего часового пояса в Java?
  • Параметр DateTime с часовым поясом формы PST / CEST / UTC / etc.
  • Преобразование между локальными временами и GMT / UTC в C / C ++
  • Как получить часовой пояс из местоположения с использованием координат широты и долготы?
  • Как конвертировать дату с одного часового пояса в другой часовой пояс
  • Как использовать TimeZoneInfo для получения местного времени во время летнего времени?
  • Установите системный часовой пояс из .NET.
  • Получить имя часового пояса
  • Временные зоны MySQL
  • Interesting Posts
    Давайте будем гением компьютера.