下面是从java返回的时区列表的片段(我已经使用JodaTime打印了时区偏移量、时区ID和长名称)。
(GMT-10:00) HST, Hawaii Standard Time
(GMT-10:00) Pacific/Apia, -10:00
(GMT-10:00) Pacific/Fakaofo, Tokelau Time
(GMT-10:00) Pacific/Honolulu, Hawaii Standard Time
(GMT-10:00) Pacific/Johnston, Hawaii Standard Time例如,Pacific/Honolulu,和Pacific/Johnston,与HST有什么区别?他们似乎都在使用夏威夷标准时间,为什么数据库中有3个条目?
如果我使用tzDatabase中的所有时区,则列表很长,并且似乎有有效的重复项(例如上面的例子)。我只需列出独特的长表单名称,如“夏威夷标准时间”,但我需要决定如何将其映射到使用相同长名称的任何时区。
在这种情况下,其他人会做什么呢?如何创建一个用户友好的时区列表,并将它们映射到相关的java TimeZone?
发布于 2010-12-08 19:34:34
我认为你是在假设“用户友好”意味着向他们展示一个小清单。事实上,所有这些时区都是某个人在某个地方使用的。在你看来,他们看起来可能是一样的,但他们的行为往往略有不同。我住在萨斯喀彻温省,我们有自己的CST版本。很长的名字只是“中央标准时间”,但是我们不使用DST,所以在半年的时间里,我们不与真正的CST保持一致。萨斯喀彻温省甚至有一小部分地区在时间上有15分钟的差异。即使他们看起来是一样的,他们是不同的,我认为你应该允许用户从整个列表中进行选择。
试图智能缩短列表可能与在允许用户选择首选货币时不列出所有可能的货币代码类似。是的,可能只有少数几个人使用特定的。当然,目前可能有一些国家的换算率是相同的。最后,让用户决定他们关心的是什么。
一个显示大列表或可能不重要的数据的解决方案只有几个真正感兴趣的项目:首先确定常用的数据,然后将它们分离到列表的顶部。这可以在供选择国家的各种网站上看到,例如:
Canada
United States
------------------
Argentina
Australia
...此策略也经常用于我以前的货币示例。对于时区(如果您的主要用户群在北美),它可能是这样的:
EST
CST
MST
PST
------------------
Hawaii
Saskatchewan
...但请记住,这将需要您手动,预先确定什么是公共时区.
我认为最好的方法是简单地列出所有时区,按偏移量排序,因为大多数人都知道在哪里可以根据偏移量找到区域。例如,我总是先看"-6:00",而不是萨斯喀彻温省。希望这能有所帮助!
发布于 2010-12-03 10:47:12
CLDR数据包含一个“重要”时区的列表,可能用于选择要显示的时区。(我记得其他的事情,但这是我现在能找到的最好的了)
如果数据在过去是不同的,或者如果位置已被重命名(时区数据中的别名功能),则同一位置将存在多个时区in。在编译时区数据时删除后向文件将移除大部分别名。
发布于 2010-11-23 16:48:49
时区是否使用夏时制可能是最常见的区别。
https://stackoverflow.com/questions/4254368
复制相似问题