在 Python 中将带有 +00:00 的字符串转换为日期时间

时间:2021-07-28 13:28:08

标签: python formatting timestamp

我被困在如何将这个强转换为日期时间对象。这是我试过的:

import datetime
date_time_str = "2021-07-28 11:19:36.824150+00:00"
date_time_obj = datetime.datetime.strptime(date_time_str, '%y-%m-%d %H:%M:%S.%f%z')

然而,我一直得到

<块引用>

ValueError: 时间数据 '2021-07-28 11:19:36.824150+00:00' 格式不匹配。

正确的格式是什么?

3 个答案:

答案 0 :(得分:3)

您的问题不是时区,而是年份。您应该使用 %Y 而不是 %y

>>> import datetime
>>> date_time_str = "2021-07-28 11:19:36.824150+00:00"
>>> date_time_obj = datetime.datetime.strptime(date_time_str, '%Y-%m-%d %H:%M:%S.%f%z')
>>> date_time_obj
datetime.datetime(2021, 7, 28, 11, 19, 36, 824150, tzinfo=datetime.timezone.utc)

答案 1 :(得分:3)

关于doc

  • %y 表示 2 位数年份
  • %Y 表示 4 位数年份

使用'%Y-%m-%d %H:%M:%S.%f%z'

date_time_obj = datetime.strptime(date_time_str, '%Y-%m-%d %H:%M:%S.%f%z')

或使用 fromisoformat

date_time_obj = datetime.fromisoformat(date_time_str)

答案 2 :(得分:0)

您的问题是您使用了 %y 而不是 %Y
(见参考:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/environments?view=aspnetcore-5.0

date_time_str = "2021-07-28 11:19:36.824150+00:00"
date_time_obj = datetime.datetime.strptime(date_time_str, '%Y-%m-%d %H:%M:%S.%f%z')