3

我是 Rails 的新手,我面临以下问题,我想知道正在访问我的控制器的客户端时区。有没有办法做到这一点?我想做类似以下代码的事情:

client_timezone = request.get_timezones
4

3 回答 3

5

为了实现我想要的,我使用了两个 gem,一个名为Timezone,另一个名为GeoCoder。为了在服务器端获取时区。

使用地理编码器,我可以询问请求的纬度和经度,并使用这条信息,我使用时区 gem 来获取该坐标的时区。

这里有一些代码:

def my_method
    my_latitude = request.location.latitude
    my_longitude = request.location.longitude
    timezone = Timezone::Zone.new :latlon => [my_latitude, my_longitude]
    timezone_offset = timezone.offset
    ....
end

PS:要使用时区宝石,您必须在地名中创建一个帐户

于 2012-09-04T19:24:08.420 回答
2

很好地通过了你在 cookie 中的时间,然后从中获取时区

  var offset = (new Date()).getTimezoneOffset()
  var date = new Date();
  date.setTime(date.getTime()+3600000);
  document.cookie = "utc_offset="+offset+"; expires="+date.toGMTString();+"; path=/";

在那里你有用户时区与UTC的偏移量

或将用户时区信息存储在数据库中,然后检索它

但我想你的要求是第一个

祝你好运

于 2012-08-24T18:17:34.747 回答
0

在搜索我的迷你项目时,我还从TimeZoneDB中找到了一个替代 API。

您可以通过经纬度查询获取 GMT 偏移量,也可以直接通过时区名称查询。

于 2012-09-21T14:00:10.603 回答