2012-12-14 14 views
24

メソッドが現在のTime.zoneを受け取り、ActiveSupport::TimeZone[some_zone].parse()で使用可能な形式にするにはどうすればよいですか?Railsでは、現在のタイムゾーン(Time.zone)をActiveSupport :: TimeZone [zone] .parse()で使用できる形式で取得するにはどうすればよいですか?

それはTime.zone.to_sがActiveSupport::TimeZone[zone].parse()

Time.zone.to_s戻り

"(GMT-08:00) Pacific Time (US & Canada)"しかしActiveSupport::TimeZone["(GMT-08:00) Pacific Time (US & Canada)"]で使用することはできません文字列を返すことは非常に奇妙なようnilです。使用Time.zone.name

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

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

答えて

36

は、ない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) 

私はこの(要求された通り)を得た方法については、私はちょうどname方法がTime.zoneに存在することがわかっています。私が心でこれを知らなかったら、私は文書をチェックします。あなたは(と、それはhere、である)を言うように、それはそこにない場合、私は一般的にPryとクラス/モジュール/オブジェクトを検査します。 PRYは(あなたは右のあなたがそこに記載されているnameが表示されますスクロールする場合)私は、オブジェクトに印刷法上の行[2]

[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ような何かを行うことができますIRBに代わるものです。あなたは[3]で見ることができます私は内部にあるTime.zoneオブジェクトで直接呼び出すことができ、あなたが探している出力を得ることができます。

+0

ありがとうございました...ドキュメントを見て、それを見たことはありません。好奇心が強い、この種のものを見つける方法は? – jpwynn

+0

私はこれを見つける方法を説明するために私の答えを更新しました。 – deefour

関連する問題