加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 从UTC偏移量获取时区名称

发布时间:2020-12-20 11:48:53 所属栏目:Python 来源:网络整理
导读:如何从 Python中的给定UTC偏移量中获取时区名称? 例如,我有, "GMT+0530" 我想得到, "Asia/Calcutta" 如果有多个匹配项,则结果应为时区名称列表. 解决方法 可能存在零个或多个(多个)时区,其对应于单个UTC偏移.要查找现在具有给定UTC偏移的这??些时区: #!/us
如何从 Python中的给定UTC偏移量中获取时区名称?

例如,我有,

"GMT+0530"

我想得到,

"Asia/Calcutta"

如果有多个匹配项,则结果应为时区名称列表.

解决方法

可能存在零个或多个(多个)时区,其对应于单个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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读