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

时间:2014-10-16 10:28:00

标签: java timezone

更新:我倾向于从维基百科中提取数据并自己创建选择器:List of time zones by countrydaylight saving time by country。它仍有一些问题:我没有得到时区的所有官方名称,我必须自己提供夏令时。提供不同的语言可能也是一个问题。

我希望我的网站用户能够选择他们的时区(或者实际上也使用不属于他们自己的时区的网站)。我目前使其成为可行的想法是让用户首先选择他们的国家,然后提供该国家/地区的时区列表以供选择。 (选择国家/地区是可选的,没有国家/地区会有可供选择的所有可用时区的列表)。

网络上的所有内容都指向Olson数据库,但我遇到了问题。我希望显示一个国家的官方时区,而不是古怪的奥尔森名字。例如根据Wikipedia on US time zones,美国正式有9个时区,但奥尔森数据库似乎为美国提供了至少31个时区。总的来说,我认为Olson数据库的条目太多了,我不清楚如何将它们归结为官方时区。

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

当然我会提供自动定位,但这只是一个很好的添加。此外,对于想要获取不同时区的数据的用户也无济于事。

非常感谢任何想法!

编辑:我接受我可能需要通过地理位置。但是,我如何才能从奥尔森的名字中获得官方时区名称?我想我可以通过地理位置找到奥尔森时区,但我不想在我的应用程序中显示类似“timezone:America / Indiana / Vincennes”的内容。

(顺便提一下,我目前的应用程序是用Java编写的,但我也想听听一般解决方案或可用数据库)。

1 个答案:

答案 0 :(得分:0)

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

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

它是用shell脚本编写的,您可能需要查看源代码并了解它是如何工作的。