如何提供优雅的时区选择器?
Posted
技术标签:
【中文标题】如何提供优雅的时区选择器?【英文标题】:How to provide an elegant time zone picker? 【发布时间】:2014-12-11 16:23:05 【问题描述】:更新:我倾向于从 Wikipedia 中提取数据并自己创建选择器:List of time zones by country 和 daylight saving time by country。它仍然存在一些问题:我没有得到所有时区的正式名称,而且我必须自己提供夏令时。提供不同的语言也可能是个问题。
我希望我网站的用户能够选择他们的时区(或者实际上也可以使用具有他们自己时区以外的时区的网站)。我目前使其可行的想法是让用户首先选择他们的国家,然后提供该国家的时区列表以供选择。 (选择国家/地区是可选的,如果没有国家/地区,则会有一个所有可用时区列表可供选择)。
网络上的所有内容都指向 Olson 数据库,但我对此有疑问。我更愿意显示一个国家的官方时区,而不是奇怪的奥尔森名字。例如,根据Wikipedia on US time zones,美国官方有 9 个时区,但奥尔森数据库似乎为美国提供了至少 31 个时区。总的来说,我认为奥尔森数据库的条目太多了,我不清楚如何将它们归结为官方时区。
我也不太喜欢基于地图的选择器的解决方案,因为不是每个人都可能知道他们在地图上的当前位置。
当然我会提供自动定位,但这只是一个很好的附加功能。此外,对于想要获取与自己所在时区不同的数据的用户也无济于事。
非常感谢您的任何想法!
编辑:我接受我可能不得不通过地理。但是我怎么能从奥尔森的名字中得到一个官方的时区名字呢?我想我可以通过地理找到奥尔森时区,但我不想在我的应用中显示“时区:美国/印第安纳州/文森斯”之类的内容。
(顺便说一下,我当前的应用程序是用 Java 编写的,但我也想了解通用解决方案或可用数据库)。
【问题讨论】:
你能链接到相关的***文章,建议 9 个时区吗?奥尔森 (IANA) 数据库中有更多数据的原因之一是,它说明了在我们现在认为的不同区域在不同时间之间切换的不同位置。 (例如en.wikipedia.org/wiki/Time_in_Indiana)这可能与您无关(如果您只关心“当前和未来值”),但如果您想根据位置了解任何特定时刻的当地时间,这很重要。 (是的,这是一个很难解决的难题。CLDR 有一些您可能感兴趣的数据,但它引入了一个完整的额外 ID 方案来让您大开眼界。) 另外,在使用基于地图的选择器之前,请确保您通过显示国家之间有争议的边界来研究 Microsoft 遇到的政治问题。 这是美国的应用程序吗?如果是这样,也许你可以让他们输入他们的 zip 并给他们正确的时区。 我已经更新了这个问题,其中包含指向美国时区的***文章的链接。 【参考方案1】:有一个名为 tzselect 的程序,我认为它是许多不同 Linux 发行版的标准配置,可让您以交互方式选择时区。
它首先询问您大陆/海洋,然后是国家/地区,然后是国内的任何部门(如果有)。或者,您可以输入地理坐标并从最近的时区列表中选择一个时区。
它是用 shell 脚本编写的,你可能想看看源代码,看看它是如何工作的。
【讨论】:
以上是关于如何提供优雅的时区选择器?的主要内容,如果未能解决你的问题,请参考以下文章