在Rails中,如何以可与ActiveSupport :: TimeZone .parse()一起使用的格式获取当前时区(Time.zone)?

方法如何获取当前的Time.zone并将其置于ActiveSupport::TimeZone[some_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

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

使用Time.zone.name ,而不是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) 

至于我如何得到这个(按要求) ,我只知道Time.zone存在name方法。 如果我不清楚这一点,我会查看文档。 如果它不在你那里(并且在这里 ,我通常用Pry检查类/模块/对象。 Pry是irb的替代品,让我可以做类似的事情

 [1] pry(main)> cd Time.zone [2] pry(#):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(#):1> name => "Eastern Time (US & Canada)" 

ls -m on the line [2]在对象上打印方法(如果你向右滚动,你会看到那里列出的name 。 您可以在[3]看到我可以直接在我所在的Time.zone对象上调用name ,并获得您正在寻找的输出。