【发布时间】:2014-10-02 15:25:07
【问题描述】:
给定一个 ActiveSupport::TimeZone 对象,我想检索一个国家名称或代码。有什么内置的东西可以做到这一点吗?有什么宝石吗?我在 Rails 文档中没有看到任何提供这种转换的东西。我知道这里有一些歧义,但我只是在寻找对象中指定的城市所在的国家/地区。
【问题讨论】:
给定一个 ActiveSupport::TimeZone 对象,我想检索一个国家名称或代码。有什么内置的东西可以做到这一点吗?有什么宝石吗?我在 Rails 文档中没有看到任何提供这种转换的东西。我知道这里有一些歧义,但我只是在寻找对象中指定的城市所在的国家/地区。
【问题讨论】:
您可以使用TZInfo::Country.get('AU'),而不是使用ActiveSupport::TimeZone,其中AU 是国家代码。
参考这个链接get country from time zone
【讨论】:
ActiveSupport::TimeZone 是一个与时区有关的类,它不是特定于国家的。因此,您无法获取国家名称或代码。
但是,ActiveSupport::TimeZone 可以返回其名称,该名称可能是也可能不是国家。例如:
> Time.zone
=> #<ActiveSupport::TimeZone:0x007fdf7d526660 @name="UTC", @utc_offset=nil, @tzinfo=#<TZInfo::TimezoneProxy: Etc/UTC>, @current_period=#<TZInfo::TimezonePeriod: nil,nil,#<TZInfo::TimezoneOffset: 0,0,UTC>>>>
> Time.zone = 'Hawaii'
> Time.zone.name
=> "Hawaii"
【讨论】: