2012-12-14 13 views
24

W jaki sposób metoda może pobrać bieżącą strefę czasową i umieścić ją w formacie używanym przez ActiveSupport::TimeZone[some_zone].parse()?W Railsach, jak uzyskać bieżącą strefę czasową (Time.zone) w formacie, który może być użyty z ActiveSupport :: Strefa czasowa [strefa] .parse()?

Wydaje się bardzo dziwne, że Time.zone.to_s zwraca ciąg znaków, który nie może być używany z ActiveSupport::TimeZone[zone].parse()

Time.zone.to_s zwrotów "(GMT-08:00) Pacific Time (US & Canada)"

Ale ActiveSupport::TimeZone["(GMT-08:00) Pacific Time (US & Canada)"] jest nil.

ActiveSupport::TimeZone["(GMT-08:00) Pacific Time (US & Canada)"] 
=> nil 

ActiveSupport::TimeZone["Pacific Time (US & Canada)"] 
=> (GMT-08:00) Pacific Time (US & Canada) 

Odpowiedz

36

Zastosowanie Time.zone.name nie Time.zone.to_s

[1] pry(main)> Time.zone.to_s 
=> "(GMT-05:00) Eastern Time (US & Canada)" 
[2] pry(main)> Time.zone.name 
=> "Eastern Time (US & Canada)" 
[3] pry(main)> ActiveSupport::TimeZone[Time.zone.name] 
=> (GMT-05:00) Eastern Time (US & Canada) 

chodzi o jak mam to (na żądanie), wiem tylko metoda name istnieje na Time.zone. Jeśli jednak nie wiedziałem tego na pamięć, sprawdzę dokumenty. Jeśli nie jest tam tak jak mówisz (i to jest here), ja zazwyczaj skontrolować klasa/moduł/przedmiot z Pry. Pry jest alternatywą dla IRB, które pozwala mi zrobić coś takiego

[1] pry(main)> cd Time.zone 
[2] pry(#<ActiveSupport::TimeZone>):1> ls -m 
Comparable#methods: < <= == > >= between? 
ActiveSupport::TimeZone#methods: <=> =~ at formatted_offset local local_to_utc name now parse period_for_local period_for_utc to_s today tzinfo utc_offset utc_to_local 
self.methods: __pry__ 
[3] pry(#<ActiveSupport::TimeZone>):1> name 
=> "Eastern Time (US & Canada)" 

ls -m na linii [2] powyżej drukuje metod na obiekcie (jeśli przewiń w prawo zobaczysz name wymienione tam). Możesz zobaczyć w [3] mogę zadzwonić pod numer name bezpośrednio na obiekt Time.zone, w którym się znajduję, i uzyskać wynik, którego szukasz.

+0

niesamowite dziękuję ... spojrzał na dokumenty, nigdy nie widział. Ciekawi Cię, jak znaleźć takie rzeczy? – jpwynn

+0

Zaktualizowałem swoją odpowiedź, aby wyjaśnić, w jaki sposób mogę to znaleźć. – deefour

Powiązane problemy