我注意到,当我将用户输入的日期时间转换为本地时区时,最终存储在数据库中的日期时间有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>)