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



我被困在如何将这个强转换为datetime对象。这是我尝试过的:

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: time data '2021-07-28 11:19:36.824150+00:00' does not match format.

正确的格式是什么?

关于文档

  • %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)

你的问题不是时区,而是年份。您应该使用%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)

您的问题是使用%y而不是%y
(参见参考:https://www.programiz.com/python-programming/datetime/strptime)

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')

最新更新