将 2021-01-18T11:18:10.833876+00:00 转换为日期时间 python

convert 2021-01-18T11:18:10.833876+00:00 to datetime python

我正在尝试将以下字符串转换为 python 中的日期时间。参考 后,我正在尝试下面提到的格式。

config_current_ts = datetime.strptime(internal_config["timestamp_str"], "%Y:%m:%dT%H:%M:%S.%f%z")

但我收到一条错误消息:

ValueError: time data '2021-01-18T11:18:10.833876+00:00' does not match format '%Y:%m:%dT%H:%M:%S.%f%z'

我正在使用 python3.7.4。有人可以告诉我如何将其转换为日期时间吗?我想基本上比较字符串和当前时间,看看哪个在前面。

格式字符串应该是'%Y-%m-%dT%H:%M:%S.%f%z'

>>> from datetime import datetime
>>> d = '2021-01-18T11:18:10.833876+00:00'
>>> datetime.strptime(d, '%Y-%m-%dT%H:%M:%S.%f%z')
datetime.datetime(2021, 1, 18, 11, 18, 10, 833876, tzinfo=datetime.timezone.utc)

对于 Python 3.7+,使用 fromisoformat - 因为您有 ISO 8601 格式,所以它是合适的并且作为一个好处也 more efficient。例如:

from datetime import datetime
s = '2021-01-18T11:18:10.833876+00:00'
dt = datetime.fromisoformat(s)

print(dt)
# 2021-01-18 11:18:10.833876+00:00
print(repr(dt))
# datetime.datetime(2021, 1, 18, 11, 18, 10, 833876, tzinfo=datetime.timezone.utc)