UTC本身的偏移量可能是不明确的(它可能对应于在某个时间段内可能具有不同规则的多个时区):
#!/usr/bin/env python
from datetime import datetime, timedelta
import pytz # $ pip install pytz
input_utc_offset = timedelta(hours=-4)
timezone_ids = set()
Now = datetime.Now(pytz.utc) #XXX: use date that corresponds to input_utc_offset instead!
for tz in map(pytz.timezone, pytz.all_timezones_set):
dt = Now.astimezone(tz)
tzinfos = getattr(tz, '_tzinfos',
[(dt.tzname(), dt.dst(), dt.utcoffset())])
if any(utc_offset == input_utc_offset for utc_offset, _, _ in tzinfos):
# match timezones that have/had/will have the same utc offset
timezone_ids.add(tz.zone)
print(timezone_ids)