gpt4 book ai didi

ruby - 从 tzInfo 时区获取国家/地区?

转载 作者:数据小太阳 更新时间:2023-10-29 08:43:05 26 4
gpt4 key购买 nike

给定一个 tzInfo TimeZone 对象,例如 'America/New_York',我如何才能获得将使用带有此标识符的时区的关联国家(多个国家?)?

实例方法不链接回国家:

http://www.rubydoc.info/gems/tzinfo/TZInfo/Timezone

我的问题描述:

  • 我收到了在特定时区生成的科学数据集,并给出了长时区标识符(幸运的是!)。这些数据集未在启用地理定位的情况下存储,因此时区是生成数据的第一个标识符。
  • 将时区变成友好的标识符是了解时区起源的第一步,但许多时区名称都非常深奥(America/Menominee?),因此从时区到国家/地区列表的反向查找会很棒支持该区域。

最佳答案

我不确定是否有直接的方法,但您可以使用 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/LondonAmerica/New_York).因此像 GMTEtc/GMT+1 这样的名称不会出现在该列表中。

关于ruby - 从 tzInfo 时区获取国家/地区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45568483/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com