datetime.now(tzinfo)和datetime.now()。replace(tzinfo = tzinfo)有什么区别?

我注意到,当我将用户输入的日期时间转换为本地时区时,最终存储在数据库中的日期时间有6分钟的偏差,因此我发现datetime.now(tzinfo)datetime.now().replace(tzinfo=tzinfo)之间有一些差异

>>> datetime.now(pytz.timezone('Asia/Shanghai'))
datetime.datetime(2019,11,12,22,51,49,495273,tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>)

>>> datetime.now().replace(tzinfo=pytz.timezone('Asia/Shanghai'))
datetime.datetime(2019,349327,tzinfo=<DstTzInfo 'Asia/Shanghai' LMT+8:06:00 STD>)

“ CST + 8:00:00”和“ LMT + 8:06:00”之间有什么区别?为什么?

实际上,后面的那个(带替换)是错误的,因为当我将它们转换回UTC时间时,后面的那个(带替换)与原始时间是不一样的:

>>> datetime.utcnow()
datetime.datetime(2019,14,668120)

>>> datetime.now(pytz.timezone('Asia/Shanghai')).astimezone(pytz.utc)
datetime.datetime(2019,52,79119,tzinfo=<UTC>)

>>> datetime.now().replace(tzinfo=pytz.timezone('Asia/Shanghai')).astimezone(pytz.utc)
datetime.datetime(2019,45,54,908616,tzinfo=<UTC>)
doubledd 回答:datetime.now(tzinfo)和datetime.now()。replace(tzinfo = tzinfo)有什么区别?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3116442.html

大家都在问