time - 奥尔森/IANA 时区的更好名称

标签 time timezone nodatime

我们希望在我们的网站上将 Windows 时区转换为 OLSON 时区。然而,奥尔森时区的问题在于它们使用大陆来命名而不是国家/地区名称,例如:

America/New_York
Asia/Kolkata
...

我认为我们的任何客户都不会期望他/她必须输入大陆名称才能找到正确的时区 - 并且时区列表比 Windows 中使用的要大得多 - 几乎千。即使客户发现他必须输入大陆名称,例如亚洲,那么他也必须在数百个时区中搜索所有亚洲国家/地区。从可用性的角度来看,这非常糟糕。

是否有任何数据库可以将 OLSON/IANA 时区名称映射到国家/地区样式名称,例如:

America/New_York -> New York, USA
Asia/Kolkata -> Kolkata, India

最佳答案

简短的回答,没有国家风格名称的供应商。如果你想要这个,就看你的努力了。长答案:IANA-TZDB 分为地区,而不是国家,因此采用特殊形式的标识符(大陆/城市)。来自 theory file :

  • tz 数据库不记录区域的边界,并且在许多情况下 情况下边界是未知的。例如,区域 America/Kentucky/Louisville 代表城市周围的一个区域 路易斯维尔,其边界尚不清楚。

  • 在政治变化面前保持稳健。这减少了 更新和向后兼容性黑客的数量。例如, 通常不使用国家名称,以避免 国家更改名称时的不兼容性 (例如扎伊尔->刚果)或当位置改变国家时 (例如从英国殖民地到中国的香港)。

可以在此文件中阅读更多详细信息。 tzdb 的管理员表示希望减少区域标识符的数量,并将所有政治问题排除在 tzdb 之外,尤其请参阅 2013 年 9 月 IANA 邮件列表上的激烈辩论。遵循国家边界的标识符通常在政治上不稳定。

关于time - 奥尔森/IANA 时区的更好名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20751586/

相关文章:

javascript - Javascript 中的防欺骗时间

c# - 使用 C# 将 UTC 转换为 IST

c# - Noda Time (C#) 魔术解析 JSON(假定为 ISO 8601)日期。例如1396949418557

PHP 计算两个时区之间的时差(以小时为单位)

php - 在php中创建定时器算法

linux - 这些获取资源使用情况的方法有什么区别?

javascript - 使用 date-fns 将日期解析为 UTC 的正确方法

c# - 将 UTC 日期时间转换为另一个时区

c# - 如何在ServiceStack中注册NodaTime?

c# - 使用NodaTime按经纬度获取国家代码