代码之家  ›  专栏  ›  技术社区  ›  Sachin R

Rails TZInfo::时区帮助

  •  1
  • Sachin R  · 技术社区  · 14 年前

    TZInfo::Timezone

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

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

    1 回复  |  直到 14 年前
        1
  •  0
  •   huertanix    10 年前

    这有点复杂,但是您可以使用geocoder获取城市的纬度和经度,然后使用它从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)