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
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
.
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
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.
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
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