You can convert a string to Python date object using the strptime() function (string parse time). It can handle all sorts of formats, with the format determined by a format string you give it:
strptime(date_string, format)
Return a datetime corresponding to date_string, parsed according to format.
The date contains year, month, day, hour, minute, and second.
A reference of all the legal format codes :
| Directive | Description |
|---|---|
| %a | Weekday as locale's abbreviated name. |
| %A | Weekday as locale’s full name. |
| %w | Weekday as a decimal number, where 0 is Sunday and 6 is Saturday. |
| %d | Day of the month as a zero-padded decimal number. |
| %b | Month as locale’s abbreviated name. |
| %B | Month as locale’s full name. |
| %m | Month as a zero-padded decimal number. |
| %y | Year without century as a zero-padded decimal number. |
| %Y | Year with century as a decimal number. |
| %H | Hour (24-hour clock) as a zero-padded decimal number. |
| %I | Hour (12-hour clock) as a zero-padded decimal number. |
| %p | Locale’s equivalent of either AM or PM. |
| %M | Minute as a zero-padded decimal number. |
| %S | Second as a zero-padded decimal number. |
| %f | Microsecond as a decimal number, zero-padded on the left. |
| %z | UTC offset in the form ±HHMM[SS[.ffffff]] (empty string if the object is naive). |
| %Z | Time zone name (empty string if the object is naive). |
| %j | Day of the year as a zero-padded decimal number. |
| %U | Week number of the year (Sunday as the first day of the week) as a zero padded decimal number. All days in a new year preceding the first Sunday are considered to be in week 0. |
| %W | Week number of the year (Monday as the first day of the week) as a decimal number. All days in a new year preceding the first Monday are considered to be in week 0. |
| %c | Locale’s appropriate date and time representation. |
| %x | Locale’s appropriate date representation. |
| %X | Locale’s appropriate time representation. |
| %% | A literal '%' character. |
from datetime import datetime
dateStr = "2020-03-01 10:52:26.108540+04:00"
dateObj = datetime.strptime(dateStr, '%Y-%m-%d %H:%M:%S.%f%z')
print("Date is : ",dateObj)
ValueError: time data '2018-05-02 11:52:26.108540+02:00' does not match format
%Y-%m-%d %H:%M:%S.%f+%Z'
Here, the issue is the offset +04:00 you need to remove the colon ':' then it will work: