python将带时区的时间戳转换为日期时间

时间:2021-06-10 10:06:07

标签: python datetime

dt = "2021-06-10T10:56:58.189+0200"

是我的时间戳,我想将其转换为日期时间表示。 我使用以下代码来做到这一点:

d = dateutil.parser.parse(dt)

但我的输出是这样的:

2021-06-10 10:56:58.189000+02:00

变化不大。如何在新创建的日期时间对象中包含有关时区的信息。我从文档中尝试了更多内容,但无法自己解决..

提前致谢。

1 个答案:

答案 0 :(得分:1)

请注意,+0200 是 UTC 偏移量,而不是时区(例如,“America/Los_Angeles” 是时区)。如果你想设置一个特定的时区,你可以这样做

from datetime import datetime
from zoneinfo import ZoneInfo

# you can do the parsing with the standard lib:
s = "2021-06-10T10:56:58.189+0200"
dt = datetime.strptime(s, "%Y-%m-%dT%H:%M:%S.%f%z")

# now set a time zone:
dt_tz = dt.astimezone(ZoneInfo("Europe/Berlin"))
                      
print(dt_tz) # __str__ gives you ISO format 
# 2021-06-10 10:56:58.189000+02:00

print(dt_tz.strftime("%Y-%m-%dT%H:%M:%S %Z")) # custom format
# 2021-06-10T10:56:58 CEST

print(repr(dt_tz)) # object representation; __repr__
# datetime.datetime(2021, 6, 10, 10, 56, 58, 189000, tzinfo=zoneinfo.ZoneInfo(key='Europe/Berlin'))
相关问题