Fake Name Fake Name - 1 month ago 11
Python Question

TypeError: must be string, not datetime.datetime when using strptime

I am trying to write a function in Python 2.7 that converts a series of numbers into a valid date. So far, it all works apart form the conversion.

Here is the relevant code:

import datetime

def convert_date(x,y,z):
orig_date = datetime.datetime(x,y,z)
d = datetime.datetime.strptime(str(orig_date), '%Y-%m-%d %H:%M:%S')
result = d.strftime('%m-%d-%Y')
return orig_date

a = convert_date(13,11,12)
print a


Whenever I run this, I get:


Traceback (most recent call last):
File "test.py", line 9, in
a = convert_date(13,11,12)
File "test.py", line 5, in convert_date
d = datetime.datetime.strptime(orig_date, '%Y-%m-%d %H:%M:%S')

TypeError: must be string, not datetime.datetime


I know that this is because
strptime
gives me a
datetime object
, but how do I get this to work?

Answer

For anyone who runs into this problem in the future I figued I might as well explain how I got this working.

Here is my code:

import datetime

def convert_date(x,y,z):
    orig_date = datetime.datetime(x,y,z)
    orig_date = str(orig_date)
    d = datetime.datetime.strptime(orig_date, '%Y-%m-%d %H:%M:%S')
    d = d.strftime('%m/%d/%y')
    return d

As I should have figured out from the error message before I posted, I just needed to convert orig_date to a string before using strftime.