给出一个ActiveSupport::TimeWithZone
的时间实例,如何为该时间实例返回完整的时区名称?
从ActiveSupport文档中:
Time.zone = 'Eastern Time (US & Canada)' # => "Eastern Time (US & Canada)"
time = Time.zone.now
time.zone # => "EST"
因此,给定一个时间对象,我可以使用time.zone
轻松获得时区缩写,但是我如何获得完整的时区名称?在文档的示例中,该字段为"Eastern Time (US & Canada)"
(我也会对"America/New_York"
感到满意)?
我意识到时区名称尚未标准化,因此,我很乐于找到一种将缩写转换为任何非缩写格式(例如"Eastern Time (US & Canada)"
或"America/New_York"
的方法) )。
似乎没有任何内置的时区缩写到时区的反向映射。至少,我还没有找到它。显然我可以创建自己的映射,但是很有可能这是一个已解决的问题。
答案 0 :(得分:1)
看起来缩写不是唯一的。因此,一个类似“ ACT”的缩写表示两个不同的时区,一个在南美,一个在澳大利亚https://www.timeanddate.com/time/zones/。那可以解释为什么红宝石没有内置的方式来做您需要的事情。
也许您可以使用https://github.com/davispuh/TimezoneParser这个宝石
答案 1 :(得分:0)
问题似乎是我没有像我想的那样与ActiveSupport::TimeWithZone
实例进行交互。
ActiveSupport::TimeWithZone
应该具有一个返回我想要的属性的time_zone
属性,但是标准的Time
对象只是具有一个返回字符串时区缩写的zone()
方法。 / p>