2

我正在尝试检索所有时区 tzinfo 的数组,但我只需要每个时区的“America/Los_Angeles”部分,这样我就可以验证从 iOS 移动客户端接收到的时区。当前运行以下:

ActiveSupport::TimeZone.zones_map.values.collect { |z| z.tzinfo }

我得到了课程TZInfo::TimezoneProxy以及我需要的信息。

4

3 回答 3

3

试试下面的代码:

ActiveSupport::TimeZone::MAPPING.values
于 2014-10-21T18:12:19.560 回答
1

ActiveSupport::Timezones中的区域仅限于 146 个“有意义”区域的子集,尽管它们没有定义它们确定哪些区域是“有意义”的标准。

如果您使用它来验证来自另一个平台的 IANA 时区标识符,您肯定会遇到误报,因为其中有超过 500 个。

相反,直接使用TZinfo Gem,而不是 Rail 的奇怪变异版本。另请参阅时区标签 wiki中有关 Rails 时区标识符的部分。

于 2014-10-21T19:14:53.820 回答
0

在文档中找到实例方法“标识符” - http://www.rubydoc.info/gems/tzinfo/TZInfo/TimezoneProxy#_load-class_method

所以我需要的只是

ActiveSupport::TimeZone.zones_map.values.collect{|z| z.tzinfo.identifier }

于 2014-10-21T18:01:48.800 回答