Strefa czasowa z szynami 3

Mam dość powszechny problem, ale z jakiegoś powodu próbowałem wszystkich sugestii w Internecie i żadna nie działa.

Ustawiłem strefę czasową w config 'IE na' EST '

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

Ale kiedy czas jest wyświetlany na ekranie, nadal pokazuje czas UTC, który jest przechowywany w DB. Próbowałem debuggera i oto Wyjście

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

Update: Oto kolejny użytkownik, który ma to samo pytanie Rails timezone jest niepoprawne gdy pokazane

Author: Community, 2010-12-06

4 answers

Spróbuj in_time_zone. Na przykład

>> Time.now
=> Sun Dec 05 21:34:45 -0500 2010
>> Time.zone
=> #<ActiveSupport::TimeZone:0x1033d97b8 @name="Pacific Time (US & Canada)", @tzinfo=#<TZInfo::DataTimezone: America/Los_Angeles>, @utc_offset=-28800, @current_period=nil>
>> Time.now.in_time_zone
=> Sun, 05 Dec 2010 18:34:54 PST -08:00

W Twoim przypadku, chcesz Order.first.placed_at.in_time_zone.

 37
Author: Paul Schreiber,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-06 02:35:30

Jeśli chcesz ustawić inną strefę czasową dla różnych użytkowników aplikacji, Upewnij się, że do zmiany czasu używasz around_filter w przeciwieństwie do filtra przed.Strefa. Coś związanego z czasem.Strefa przecieka do innych wątków, a tym samym inni użytkownicy mogą dziedziczyć strefę czasową, której nie powinni. z tego wpisu na blogu: http://ilikestuffblog.com/2011/02/03/how-to-set-a-time-zone-for-each-request-in-rails/

W 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

Znalazłem również pomocne jest użycie metody helpera formularza time_zone_select, gdy pozwala użytkownikom na zmianę strefy czasowej. Jeśli wywołałeś swoje pole: time_zone, użyłbyś go w następujący sposób:

f.time_zone_select(:time_zone)

I na koniec, to wygląda niesamowicie. Automatyczne wykrywanie i Ustawianie strefy czasowej za pomocą javascript . Oto klejnot rails do dodania do asset pipeline: https://github.com/scottwater/detect_timezone_rails i towarzyszący wpis na blogu: http://www.scottw.com/automated-timezone-detection

 11
Author: Danny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-11 06:17:28

Sprawdź czy Twoje ActiveRecord::Base.time_zone_aware_attributes jest prawdziwe.

 2
Author: Duke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-18 17:30:13

Myślę, że to co opisujesz to ten błąd - https://github.com/rails/rails/issues/6816

 0
Author: joshnabbott,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-06 18:14:53