考虑以下示例,其中我采用一个简单的日期时间,使其能够识别 UTC 时区,然后转换为 UTC-5:
d1 = datetime.datetime(2019,3,7, 7,45)
d2 = pytz.utc.localize(d1)
print(f'UTC : {d2}')
d3 = d2.astimezone(pytz.timezone('Etc/GMT-5'))
print(f'UTC-5: {d3}')
其输出是:
UTC : 2019-03-07 07:45:00+00:00
UTC-5: 2019-03-07 12:45:00+05:00
我本以为UTC-5
时间到了02:45
,但是 5 小时的偏移量正在added转换为 UTC,而不是减去。
问题:
- 为什么是
'Etc/GMT-5'
偏移应用于 UTC +5 小时而不是 -5 小时?
- 我怎样才能从
UTC
to UTC-5
?
您正在使用pytz
,不仅仅是Python的datetime
.
像dateutil一样, pytz 使用 Olson tz 数据库.
Olson tz 数据库定义Etc/GMT+N
时区符合POSIX风格:
这些区域名称以
“Etc/GMT”的符号与标准 ISO 8601 约定相反。在
“Etc”区域,GMT 以西的区域有一个正号,而以东的区域有一个正号
他们的名字中带有负号(例如“Etc/GMT-14”比 GMT 早 14 小时。)
因此,要将 UTC 转换为偏移量为 -5 的时区,您可以使用Etc/GMT+5
:
import datetime as DT
import pytz
naive = DT.datetime(2019, 3, 7, 7, 45)
utc = pytz.utc
gmt5 = pytz.timezone('Etc/GMT+5')
print(utc.localize(naive).astimezone(gmt5))
# 2019-03-07 02:45:00-05:00
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)