Rails时区选择器:智能选择默认值

时间:2009-11-08 14:58:23

标签: ruby-on-rails

在我的某个应用上注册帐户时,我们需要存储时区。我们正在使用时区选择器,这很好,但我想将默认值设置为某个值它可能是用户当前的时区。

是否有一种简单的方法,无论是在服务器上还是使用JavaScript,将时区选择器设置为用户当前所在的时区?

4 个答案:

答案 0 :(得分:4)

在页面加载时,从GMT获取浏览器的偏移量,并使用此选项预先选择时区选择器。

var offestFromGMT = - new Date().getTimezoneOffset() / 60

答案 1 :(得分:1)

您可以使用IP2Location中基于用户IP地址的数据检查UTC偏移量。有了它,你应该能够轻松完成你想要的东西。

答案 2 :(得分:1)

地理编码可能总比没有好,但你必须要小心,因为地理编码通常会告诉你ISP的位置,而不是实际用户的位置。 getTimezoneOffset()更有效,因为它使用浏览器TZ,而不是ISP TZ。

答案 3 :(得分:0)

根据我的理解,用户时区或用户当前时间没有HTTP标头。

在我看来,处理此用例的最佳方法是在服务器端使用IP地址编码,然后使用ip2address等服务将其转换为时区。

这的确意味着如果地理编码和时区分辨率很慢,请求的速度也会很慢。

我也允许自定义,因为服务不能100%依赖(用户可能通过公司防火墙访问您的网站)。此外,我只会执行此解决方案一次,然后将结果存储在cookie中。