The datetime function: strptime() DOES check the date for validity. So try something like:
from datetime import datetime
def get_date():
while True:
try:
date_in = raw_input("Enter date (dd mm yyyy): ")
date_out = datetime.strptime(date_in,"%d %m %Y").strftime("%Y-%m-%d")
return date_out
except ValueError:
print "Invalid date: {}, try again...".format(date_in)
--
http://mail.python.org/mailman/listinfo/python-list
