|
|
1
35
这方面没有标准。任何人都不会正式协调时区缩写。在 IANA TZDB ,但其中很多都是随机选择的。关于应该使用哪些缩写,人们经常争论不休。例如,看看有多少关于澳大利亚缩写的帖子 in the list archives for April 2013 .
可以找到另一个时区缩写列表
here
如果你仔细观察,你会发现很多都是模棱两可的。例如
一些非澳大利亚人可能更喜欢
另一个非常常见的例子,一些人使用
关键是,任何时区缩写的列表,无论你在哪里找到,都是主观的和固执己见的。没有标准。
请 不要 这样做。时区是 不 一个偏移,其中有24个以上。请阅读 the timezone tag wiki ,尤其是标题为“时区!=偏移量”的部分。 根据您的评论:
然后,许多错误将继续出现在您的应用程序中。即使你的应用程序只是在美国运行,你也无法可靠地做到这一点。无论你使用什么语言或平台,任何这样做的实现都会有很多转换错误。
当涉及到时区时,你不应该硬编码任何东西。时区规则一直在变化,因为它们由世界上每个国家的政治家控制。每年有多次更新发布到 IANA time zone database 。在PHP方面 PHP documentation 明确当前可用的版本,并通过 PECL's timezonedb -它从IANA中提取数据。
关于什么是“受欢迎的”,这也是非常主观的。由于这样或那样的原因,TZDB中的所有区域都在那里。我所知道的唯一一个试图限制这种情况的地方是
ActiveSupport::TimeZone
来自RubyonRails。他们声称拥有“146个区域的有意义的子集”,您可以在
如果您想要的不是TZDB中所有578个区域的下拉列表,您可以尝试以下方法之一:
请注意,虽然它显示的是TZDB的缩写
最终,您需要为每个用户保存的是他们的IANA时区密钥,例如
使现代化 有一件事我没有从你最初的帖子中意识到,但你在评论中澄清了这一点,那就是你正在用它来选择目标事件时区。我想我应该先问一下上下文。我是从为用户选择一个时区的角度来处理这个问题的,而不是为特定事件选择一个特定的时区。
你们所有人
真正地
一个事件在正确时刻的需要就是该时刻的偏移量。所以你可以使用一个下拉列表,就像你在问题中显示的那样,但我会省略任何区域名称。这将是一个从
然而,普遍的问题是,许多人没有 知道 偏移量应该是多少。通过将 标准 对于每个区域名称的偏移量,您可能会误导用户选择错误的偏移量。例如,他们可能在谈论夏天的一个日期,该日期应该在美国东部夏令时(-4),但他们选择-5,因为他们看到的是“东部”。因此,删除这些名称会有所帮助。 如果你按照我最初建议的方式,让他们选择一个实际的IANA时区,这对许多场景来说会更好。然而,仍然有一种情况需要考虑——如何处理 模棱两可的 和 无效的 时间。这些情况发生在夏令时转换期间。
例如,我可以选择
无论哪种方法,当实际存储事件时间时,请确保存储日期-时间偏移组合,或者应用偏移量以获得UTC的日期-时间。你不希望有任何关于事件所代表的实际时刻的问题。 |
|
|
2
0
你可以在一个文件中找到标准时区缩写,请看我的另一个答案- https://stackoverflow.com/a/72839900/1112963 |
|
|
user_che_ban · 将带偏移量的时间戳转换为UTC 3 年前 |
|
|
Rose · 如何在python中将J2000时间转换为UTC? 8 年前 |
|
|
cloudseeker · 利用夏令时准确处理之前的本地记录时间 8 年前 |
|
|
nithin ks · Python-GPS时间到UTC的转换 8 年前 |
|
romil gaurav · 如何基于时区在mysql中存储时间戳? 10 年前 |
|
|
Mjeduar · 从角度(时区)到服务器(utc),然后从utc到时区的日期 10 年前 |