3

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?

Matt Hall
  • 7,614
  • 1
  • 23
  • 36

3 Answers3

6

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)
azro
  • 53,056
  • 7
  • 34
  • 70
4

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)
Shinra tensei
  • 1,283
  • 9
  • 21
0

Your problem was that you used %y instead of %Y
(See reference: 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')