在给定UTC偏移和DST的Rails中自动检测时区

时间:2010-05-23 10:46:17

标签: ruby-on-rails timezone dst

我基本上想要使用Rails自动检测用户的时区。我可以在用户的​​浏览器(http://www.onlineaspect.com/2007/06/08/auto-detect-a-time-zone-with-javascript/)上使用此JS代码来发送一个带有UTC偏移的表单,以及时区在夏天或之后观察DST的事实,在用户的时区。

一旦我在服务器中有了这些信息,我想选择匹配的时区。在Rails中,我可以使用ActiveSupport :: TimeZone.all获取时区列表。此外,由于utc_offset方法,我可以通过utf偏移过滤区域。但是,我不知道如何过滤掉/不遵守DST的时区。

E.g。假设用户住在阿姆斯特丹。按UTC偏移过滤将返回柏林,贝尔格拉多,马德里等时区以及中西部非洲。所有这些,但是中西部非洲,对于阿姆斯特丹的用户来说都是合适的时区(因为它们提供相同的时间/日期),但我需要过滤西非中部,它在夏天不会执行夏令时。

如何在Rails中执行此操作?此外,我的任何假设都是错误的吗?

1 个答案:

答案 0 :(得分:1)

我想也许http://geokit.rubyforge.org/会有所帮助。您可以获取用户位置(或城市/国家/地区)的坐标。您唯一需要做的就是根据城市/国家/地区猜测时区。