如何从ActiveSupport :: TimeZones.zones_map获取tzinfo?

时间:2014-10-21 18:00:27

标签: ruby-on-rails ruby timezone validating

我试图检索所有时区tzinfo的数组,但我只需要" America / Los_Angeles"从每个部分开始,我可以验证从iOS移动客户端收到的时区。目前运行以下内容:

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

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

3 个答案:

答案 0 :(得分:2)

请尝试以下代码:

ActiveSupport::TimeZone::MAPPING.values

答案 1 :(得分:1)

ActiveSupport::Timezones中的区域限制为146"有意义的"区域,虽然他们没有定义什么标准,但他们确定哪些区域是有意义的"。

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

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

答案 2 :(得分:0)

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

所以我需要的只是

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