我不确定是否有直接的方法,但您可以使用Country
该类构建将区域名称映射到国家名称的哈希。
您可以遍历国家(使用all
方法)并获取每个国家/地区的区域标识符(使用zone_identifiers
方法)来构建哈希。
我不经常用 Ruby 编写代码,所以它可能不是最好的 Ruby 风格的代码,但它是这样的:
# map zones to countries
ztc = {}
TZInfo::Country.all().each do |c|
c.zone_identifiers.each do |z|
ztc[z] = [] unless ztc.has_key?(z)
ztc[z].push(c.name)
end
end
ztc
将包含区域名称作为键,并包含相应国家名称的数组作为值。在我的机器中,我有:
{"Europe/Andorra"=>["Andorra"],
"Asia/Dubai"=>["United Arab Emirates", "Oman"],
"Asia/Kabul"=>["Afghanistan"],
"America/Port_of_Spain"=>["Antigua & Barbuda", "Anguilla", "St Barthelemy", "Dominica",
"Grenada", "Guadeloupe", "St Kitts & Nevis", "St Lucia",
"St Martin (French)", "Montserrat", "Trinidad & Tobago",
"St Vincent", "Virgin Islands (UK)", "Virgin Islands (US)"],
....
只是提醒一下,它将仅包含与国家相关联的时区(具有格式的时区Region/City
,例如Europe/London
或America/New_York
)。因此,喜欢GMT
或Etc/GMT+1
不会出现在该列表中的名称。