Convert string with +00:00 to datetime in Python

Viewed 1419

I am stuck on how to convert this strong to a datetime object. This is what I tried:

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

However, I keep getting the

ValueError: time data '2021-07-28 11:19:36.824150+00:00' does not match format.

What is the correct format?

3 Answers

Regarding the doc

  • %y is for 2 digit year
  • %Y is for 4 digit year

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

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

Or use fromisoformat

date_time_obj = datetime.fromisoformat(date_time_str)

Your problem is not the timezone, it's the year. You should be using %Y instead of %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)
Related