我正在尝试检索所有时区 tzinfo 的数组,但我只需要每个时区的“America/Los_Angeles”部分,这样我就可以验证从 iOS 移动客户端接收到的时区。当前运行以下:
ActiveSupport::TimeZone.zones_map.values.collect { |z| z.tzinfo }
我得到了课程TZInfo::TimezoneProxy
以及我需要的信息。
我正在尝试检索所有时区 tzinfo 的数组,但我只需要每个时区的“America/Los_Angeles”部分,这样我就可以验证从 iOS 移动客户端接收到的时区。当前运行以下:
ActiveSupport::TimeZone.zones_map.values.collect { |z| z.tzinfo }
我得到了课程TZInfo::TimezoneProxy
以及我需要的信息。
试试下面的代码:
ActiveSupport::TimeZone::MAPPING.values
ActiveSupport::Timezones中的区域仅限于 146 个“有意义”区域的子集,尽管它们没有定义它们确定哪些区域是“有意义”的标准。
如果您使用它来验证来自另一个平台的 IANA 时区标识符,您肯定会遇到误报,因为其中有超过 500 个。
相反,直接使用TZinfo Gem,而不是 Rail 的奇怪变异版本。另请参阅时区标签 wiki中有关 Rails 时区标识符的部分。
在文档中找到实例方法“标识符” - http://www.rubydoc.info/gems/tzinfo/TZInfo/TimezoneProxy#_load-class_method
所以我需要的只是
ActiveSupport::TimeZone.zones_map.values.collect{|z| z.tzinfo.identifier }