January 18, 2023
Получение часового пояса из Lat Long координат?
import datetime import pytz from tzwhere import tzwhere tzwhere = tzwhere.tzwhere() timezone_str = tzwhere.tzNameAt(37.3880961, -5.9823299) # Seville coordinates timezone_str #> Europe/Madrid timezone = pytz.timezone(timezone_str) dt = datetime.datetime.now() timezone.utcoffset(dt) #> datetime.timedelta(0, 7200)
2.Я смог выполнить поиск, подходящий для моих целей, с помощью программы Timezonefinder:
import datetime
import timezonefinder, pytz
tf = timezonefinder.TimezoneFinder()
# From the lat/long, get the tz-database-style time zone name (e.g. 'America/Vancouver') or None
timezone_str = tf.certain_timezone_at(lat=49.2827, lng=-123.1207)
if timezone_str is None:
print "Could not determine the time zone"
else:
# Display the current time in that time zone
timezone = pytz.timezone(timezone_str)
dt = datetime.datetime.utcnow()
print "The time in %s is %s" % (timezone_str, dt + timezone.utcoffset(dt))Обсуждение методов timezonefinder и его ограничений есть в документации по ссылке на его страницу pypi.
timezonefinder и pytz можно найти в одноименных пакетах pip.
3.Это работает, как и ожидалось:
import geonames
geonames_client = geonames.GeonamesClient('demo')
geonames_result = geonames_client.find_timezone({'lat': 48.871236, 'lng': 2.77928})
print geonames_result['timezoneId']import requests
lat = 48.871236 ## your latitude
lon = 2.77928 ## your longitude
url = "http://api.geonames.org/timezoneJSON?formatted=true&lat={}&lng={}&username=demo".format(lat,lon)
r = requests.get(url) ## Make a request
return r.json()['timezoneId'] ## return the timezone