Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何提供优雅的时区选择器?_Java_Timezone - Fatal编程技术网

Java 如何提供优雅的时区选择器?

Java 如何提供优雅的时区选择器?,java,timezone,Java,Timezone,更新:我倾向于从维基百科中提取数据并自己创建选择器:以及。它仍然存在一些问题:我并没有得到所有时区的正式名称,我必须自己提供夏令时。同时,提供不同的语言可能是一个问题 我希望我的网站的用户能够选择他们的时区(或者事实上,也可以使用除他们自己的时区以外的其他时区的网站)。我目前的想法是让用户先选择他们的国家,然后提供一个要选择的国家时区列表。(选择国家是可选的,如果没有国家,将有一个所有可用时区的列表可供选择) 网络上的所有东西都指向奥尔森数据库,但我有问题。我更喜欢显示一个国家的官方时区,而不是

更新:我倾向于从维基百科中提取数据并自己创建选择器:以及。它仍然存在一些问题:我并没有得到所有时区的正式名称,我必须自己提供夏令时。同时,提供不同的语言可能是一个问题

我希望我的网站的用户能够选择他们的时区(或者事实上,也可以使用除他们自己的时区以外的其他时区的网站)。我目前的想法是让用户先选择他们的国家,然后提供一个要选择的国家时区列表。(选择国家是可选的,如果没有国家,将有一个所有可用时区的列表可供选择)

网络上的所有东西都指向奥尔森数据库,但我有问题。我更喜欢显示一个国家的官方时区,而不是奇怪的奥尔森名字。例如,据美国官方统计,美国有9个时区,但奥尔森数据库似乎为美国提供了至少31个时区。总的来说,我认为奥尔森数据库有太多的条目,我不清楚如何将它们归结为官方时区

我也不太喜欢基于地图的选择器的解决方案,因为不是每个人都知道他们在地图上的当前位置

当然,我会提供自动定位,但这只是一个很好的附加功能。此外,对于那些希望获取与自己时区不同的数据的用户来说,这也无济于事

非常感谢您的建议

编辑:我承认我可能必须通过地理。但是我怎么能从奥尔森的名字中得到一个正式的时区名称呢?我想我可以通过地理找到奥尔森时区,但我不想在我的应用程序中显示类似“时区:美国/印第安纳/文森斯”的内容


(顺便说一句,我当前的应用程序是用Java编写的,但我也想听听通用解决方案或可用的数据库)。

有一个名为tzselect的程序,我相信它是许多不同Linux发行版的标准程序,可以让您以交互方式选择时区

它首先询问大陆/海洋,然后询问国家,然后询问国家内部的任何划分(如果有的话)。或者,您可以输入地理坐标,并从相近的时区列表中选择时区


它是用shell脚本编写的,您可能想看看源代码,看看它是如何工作的。

您可以链接到维基百科的相关文章,其中建议使用9个时区吗?在奥尔森(IANA)数据库中有更多信息的一个原因是,它说明了在不同时间在我们现在认为的不同区域之间切换的不同位置。(例如)这可能与你无关(如果你只关心“当前值和未来值”),但如果你想知道基于位置的任何特定时刻的当地时间,这很重要。(是的,这是一个很难解决的问题,很少得到很好的解决。CLDR有一些您可能感兴趣的数据,但这引入了一个完整的额外ID方案来让您恢复理智。)另外,在使用基于地图的选取器之前,请确保您通过显示国家间的边界来研究Microsoft遇到的政治问题。这是一个基于美国的应用程序吗?如果是,您可以让他们输入zip并给他们正确的时区。我已通过维基百科关于美国时区的文章链接更新了这个问题。