问题就像听起来一样 - 如何根据浏览器输入检索客户端用户的时区?如果重要的话,服务器端会使用 J2EE——但我认为在这种情况下这并不重要。目前,HTTP 是协议,它上线时可能会使用 HTTPS。
5 回答
可能你可以使用一些javascript:http: //jeoftp.blogspot.com/2009/03/determine-java-timezone-of-your-web.html
似乎有人破解了一些 javascript来推断这一点,但是是的,最好的方法是让用户决定。但是您可以使用上面的链接为用户选择默认值。
我确定这是重复的。
最好的方法是询问用户。默认情况下,时区不在 HTML 标头中发送。还要考虑来自一个时区的用户可能正在访问另一个时区。您应该使用哪个时区?
您还可以使用 IP 地理定位服务,例如 ip2location。他们出售数据库订阅,该订阅将返回 IP 地址所在的时区。当然,这是有代价的。Javascript 解决方案可以工作,但需要客户端支持。
地理位置将支持任何客户端,但可能会提供错误的结果,具体取决于 IP 块的归属方式或客户端是否使用位于不同时区的代理服务器(很可能是异常代理服务)。Javascript 解决方案将支持多种客户端,但将根据计算机设置返回时区,而不是根据实际位置返回时区(旅行用户并不总是更改计算机上的时间)。因此,没有一个单一的解决方案可以涵盖所有这些。
使用这两种方法中的一种进行猜测,然后允许用户进行更正,这将是我认为的最佳方法。如果您想过度使用两者并让用户决定哪个最有意义。
正如Pierre-Luc Simard所说,这是一个非常好的主意,您可以使用 IP 来推断该信息。归功于他,但我将添加另一个链接,指向一个免费的替代品,即Maxmind 的 Geolite。PHP 中还有一个用于时区的示例代码,我很确定您会在他们的Java API中找到等效代码。