gpt4 book ai didi

python - 为什么 datetime 对同一个时区给出不同的时区格式?

转载 作者:太空狗 更新时间:2023-10-29 21:54:03 26 4
gpt4 key购买 nike

>>> now = datetime.datetime.now(pytz.timezone('Asia/Tokyo'))
>>> dt = datetime(now.year, now.month, now.day, now.hour, now.minute, now.second, now.microsecond, pytz.timezone('Asia/Tokyo'))
>>> now
datetime.datetime(2018, 9, 7, 16, 9, 24, 177751, tzinfo=<DstTzInfo 'Asia/Tokyo' JST+9:00:00 STD>)
>>> dt = datetime(now.year, now.month, now.day, now.hour, now.minute, now.second, now.microsecond, pytz.timezone('Asia/Tokyo'))
>>> dt
datetime.datetime(2018, 9, 7, 16, 9, 24, 177751, tzinfo=<DstTzInfo 'Asia/Tokyo' LMT+9:19:00 STD>)

对于现在,我得到了JST+9:00:00,对于dt,我得到了LMT+9:19:00 。我不明白为什么 datetime 使用不同的格式。

当我比较它们不同的时间时:

>>> now == dt
False

如何将 LMT 转换为 JST 以便 now == dtTrue?我需要使用 datetime(2018, 9, 7, 16, 9, 24, 177751, timezone('Asia/Tokyo')) 同时我想要 JST.

最佳答案

a related question's answer 中所述, 永远不要使用 datetime() 创建带有时区信息的日期时间。相反,您应该在以 UTC 格式创建日期时间后使用 localize 将它们转换为 JST。

>>> import pytz
>>> from datetime import datetime
>>>
>>> now = datetime.now(pytz.utc)
>>> dt = datetime(now.year, now.month, now.day, now.hour, now.minute, now.second, now.microsecond, pytz.utc)
>>> jst = pytz.timezone('Asia/Tokyo')
>>> jst.normalize(now)
datetime.datetime(2018, 9, 7, 20, 21, 44, 653897, tzinfo=<DstTzInfo 'Asia/Tokyo' JST+9:00:00 STD>)
>>> jst.normalize(dt)
datetime.datetime(2018, 9, 7, 20, 21, 44, 653897, tzinfo=<DstTzInfo 'Asia/Tokyo' JST+9:00:00 STD>)
>>> now == dt
True

关于python - 为什么 datetime 对同一个时区给出不同的时区格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52217506/

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