解决方法
可能存在零个或多个(多个)时区,其对应于单个UTC偏移.要查找现在具有给定UTC偏移的这些时区:
#!/usr/bin/env python from datetime import datetime,timedelta import pytz # $pip install pytz utc_offset = timedelta(hours=5,minutes=30) # +5:30 Now = datetime.Now(pytz.utc) # current time print({tz.zone for tz in map(pytz.timezone,pytz.all_timezones_set) if Now.astimezone(tz).utcoffset() == utc_offset})
产量
set(['Asia/Colombo','Asia/Calcutta','Asia/Kolkata'])
如果您想要考虑历史数据(根据当前时区规则在某个日期具有/将具有给定utc偏移的时区):
#!/usr/bin/env python from datetime import datetime,minutes=30) # +5:30 names = set() Now = datetime.Now(pytz.utc) for tz in map(pytz.timezone,pytz.all_timezones_set): dt = Now.astimezone(tz) tzinfos = getattr(tz,'_tzinfos',[(dt.utcoffset(),dt.dst(),dt.tzname())]) if any(off == utc_offset for off,_,_ in tzinfos): names.add(tz.zone) print("\n".join(sorted(names)))
产量
Asia/Calcutta Asia/Colombo Asia/Dacca Asia/Dhaka Asia/Karachi Asia/Kathmandu Asia/Katmandu Asia/Kolkata Asia/Thimbu Asia/Thimphu