How to parse timezone with colon How to parse timezone with colon python python

How to parse timezone with colon


Currently, there is no cure for this, and here is and explanation: https://bugs.python.org/issue15873 more precisely, here: https://bugs.python.org/msg169952 .But you can override this issue, this way:

from datetime import datetimed = "2015-04-30T23:59:59+00:00"if ":" == d[-3:-2]:    d = d[:-3]+d[-2:]print(datetime.strptime(d, "%Y-%m-%dT%H:%M:%S%z"))


Adapted from a rejected edit:

Python >= 3.7:

from datetime import datetimed = "2019-12-25T23:59:59+00:00"print(datetime.strptime(d, "%Y-%m-%dT%H:%M:%S%z"))

Changed in version 3.7: When the %z directive is provided to the strptime() method, the UTC offsets can have a colon as a separator between hours, minutes and seconds. For example, '+01:00:00' will be parsed as an offset of one hour. In addition, providing 'Z' is identical to '+00:00'.

https://docs.python.org/3.7/library/datetime.html

Python <= 3.6

There is no built-in way, but the best solution is:

from datetime import datetimed = "2019-12-25T23:59:59+00:00"if ":" == d[-3]:    d = d[:-3]+d[-2:]print(datetime.strptime(d, "%Y-%m-%dT%H:%M:%S%z"))

Explanations:https://bugs.python.org/issue15873https://bugs.python.org/msg169952


Another solution is to use the dateutil library:

from dateutil import parsermystr = '2015-04-30T23:59:59+00:00'x = parser.parse(mystr)# 2015-04-30 23:59:59+00:00