String to date with timezone in python 3.3
I can convert the time below if I trim the timezone data using code:
print(datetime.datetime.strptime(cc.text[:25],"%Y-%m-%dT%H:%M:%S.%f"))
However, when I use% z or% Z along with timezone data, I get the following error, can you please explain where I am going wrong, I am using python 3.3 and% z should work in it.
print(datetime.datetime.strptime(cc.text,"%Y-%m-%dT%H:%M:%S.%f%z"))
Mistake:
ValueError: time data '2014-09-16T19:26:18.5455599+05:30' does not match format '%Y-%m-%dT%H:%M:%S.%f%Z'
+3
source to share
1 answer
There are two problems:
- the length of the miliseconds component is 7 digits, but Python expects 6.
- the timezone offset contains a colon
:
.
Removing those two extra characters does the job strptime()
:
>>> import datetime
>>> cctext = '2014-09-16T19:26:18.5455599+05:30'
>>> cctext[:-7] + cctext[-6:-3] + cctext[-2:]
'2014-09-16T19:26:18.545559+0530'
>>> datetime.datetime.strptime(cctext[:-7] + cctext[-6:-3] + cctext[-2:], "%Y-%m-%dT%H:%M:%S.%f%z")
datetime.datetime(2014, 9, 16, 19, 26, 18, 545559, tzinfo=datetime.timezone(datetime.timedelta(0, 19800)))
+3
source to share