gpt4 book ai didi

python - pytz UTC 转换

转载 作者:IT老高 更新时间:2023-10-28 22:04:56 28 4
gpt4 key购买 nike

将原始时间和 tzinfo 转换为 UTC 时间的正确方法是什么?说我有:

d = datetime(2009, 8, 31, 22, 30, 30)
tz = timezone('US/Pacific')

第一种方式,pytz 启发:

d_tz = tz.normalize(tz.localize(d))
utc = pytz.timezone('UTC')
d_utc = d_tz.astimezone(utc)

第二种方式,来自UTCDateTimeField

def utc_from_localtime(dt, tz):
dt = dt.replace(tzinfo=tz)
_dt = tz.normalize(dt)
if dt.tzinfo != _dt.tzinfo:
# Houston, we have a problem...
# find out which one has a dst offset
if _dt.tzinfo.dst(_dt):
_dt -= _dt.tzinfo.dst(_dt)
else:
_dt += dt.tzinfo.dst(dt)
return _dt.astimezone(pytz.utc)

不用说,这两种方法在相当多的时区产生不同的结果。

问题是——正确的方法是什么?

最佳答案

您的第一种方法似乎是经过批准的方法,并且应该支持 DST。

你可以把它缩短一点,因为 pytz.utc = pytz.timezone('UTC'),但你已经知道了 :)

tz = timezone('US/Pacific')
def toUTC(d):
return tz.normalize(tz.localize(d)).astimezone(pytz.utc)

print "Test: ", datetime.datetime.utcnow(), " = ", toUTC(datetime.datetime.now())

关于python - pytz UTC 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1357711/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com