如何使用 strptime 解析 str(my_datetime)?

How to parse str(my_datetime) using strptime?

这是日期时间的default string representation

>>> from datetime import datetime, timezone
>>> dt = datetime(2017, 1, 1, tzinfo=timezone.utc)
>>> print(dt)
2017-01-01 00:00:00+00:00

datetime.strptime 解析的正确格式字符串是什么?也就是说,用什么格式代替“???”始终具有以下不变量:

>>> dt == datetime.strptime(str(dt), "???")
True

请注意,str(d) 被记录为等同于 d.isoformat(' ')。这以 %Y-%m-%d %H:%M:%S (2017-01-01 00:00:00) 开头,但随后:

  • 要么什么都没有,要么.%f,取决于微秒部分是否非零。
  • 要么什么都没有,要么像 +HH:MM 这样的偏移量,具体取决于实例是否支持时区。

datetime.strptime 不支持可选部分,因此没有一个 format 参数可以匹配所有可能的输出。

在Python 3.7+中,可以使用datetime.fromisoformat to parse datetime.isoformat output. Contributed by Paul Ganssle in issue15873.