我不確定是否有直接的方法,但可以使用Country
class構建將區域名稱映射到國名的散列。
您可以遍歷各個國家(使用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
將不在該列表中。
什麼是你想利用這些信息做什麼?我可以想象一個時區ID在多個國家之間共享的情況。 (我不知道目前情況是否確實如此,但例如,如果一個國家分裂成兩個國家,至少可能會持續一段時間)。 –
僅供參考。大家都知道New_York在哪裏,但是America/Bahia_Banderas? –
https://github.com/eggert/tz/blob/master/zone.tab –