Rails TZInfo ::时区帮助

时间:2010-08-02 09:47:21

标签: ruby-on-rails

我使用Rails TZInfo::Timezone

我怎么能在这里添加新城市。

例如:我想在我的应用程序中显示“华盛顿特区”时区,但该城市没有可用的映射。

我使用TZInfo::Timezone.get()方法

检索所有时区

请提供一些专家建议。

1 个答案:

答案 0 :(得分:0)

这有点牵扯,但您可以使用地理编码器获取城市的纬度和经度,然后使用它来获取geonames.org的时区。这是Ruby中的一个例子:

search_location = 'Washington, DC'

geocoder_results = Geocoder.search(search_location)
# This assumes the city name will always get results from geocoder
nearest_lat = geocoder_results[0].latitude
nearest_lon = geocoder_results[0].longitude

resp = Net::HTTP.get_response(URI.parse('http://api.geonames.org/timezoneJSON?lat=' + nearest_lat.to_s + '&lng=' + nearest_lon.to_s + '&username=your_user_name_here'))
geonames_tz_info = JSON.parse(resp.body)
city_time_zone = geonames_tz_info['timezoneId']

time_zone = TZInfo::Timezone.get(city_time_zone)