我在rails中很新,我面临以下问题,我想知道访问我的控制器的客户端时区。有没有办法做到这一点?我想要做的事,如下面的代码:如何获取请求时区?
client_timezone = request.get_timezones
我在rails中很新,我面临以下问题,我想知道访问我的控制器的客户端时区。有没有办法做到这一点?我想要做的事,如下面的代码:如何获取请求时区?
client_timezone = request.get_timezones
要达到我想要的东西,我用了两个宝石,一个叫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:使用时区的宝石,你必须创建geonames
好方法。我环顾四周,发现替代方案是使用类似https://github.com/kbaum/browser-timezone-rails的,这涉及到使用依赖于Jquery的JS。 – nicooga
那么通过了你的时间在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偏移用户时区
或在数据库中存储用户的时区信息,然后检索它
但我猜哟UR要求是第一位的
好运
帐户在寻找我的小项目,我发现了一个替代API从TimeZoneDB为好。
您可以通过纬度&经纬度查询得到GMT偏移量,或直接按time zone name查询。
已经回答以前:[链接] http://stackoverflow.com/questions/338482/can-you-determine-timezone-from-request-variables – RadBrad
在这个问题的答案是使用JS(客户端,我需要服务器端)或者maxmind/geoip数据库(服务器端),我想知道是否有gem oa rails的方式来做同样的事情。 – McSas