TypeError: descriptor 'strftime' requires a 'datetime.date' object but received a 'Text'

Question:

I have a variable testeddate which has a date in text format like 4/25/2015. I am trying convert it to %Y-%m-%d %H:%M:%S as follows:

dt_str = datetime.strftime(testeddate,'%Y-%m-%d %H:%M:%S')

but I am running into this error:

TypeError: descriptor 'strftime' requires a 'datetime.date' object but received a 'Text'

How do I resolve this?

Asked By: carte blanche

||

Answers:

You have a Text object. The strftime function requires a datetime object. The code below takes an intermediate step of converting your Text to a datetime using strptime

import datetime
testeddate = '4/25/2015'
dt_obj = datetime.datetime.strptime(testeddate,'%m/%d/%Y')

At this point, the dt_obj is a datetime object. This means we can easily convert it to a string with any format. In your particular case:

dt_str = datetime.datetime.strftime(dt_obj,'%Y-%m-%d %H:%M:%S')

The dt_str now is:

'2015-04-25 00:00:00'
Answered By: Andy

A less elegant solution would involve manipulating the string directly.

testeddate = '4/25/2015'
month, day, year = testeddate.split('/')
testeddate = '-'.join([year, month, day]) + ' 00:00:00'
Answered By: thikonom
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.