Nick D tiene la forma oficial de manejar su problema. Si desea pasar una cadena como lo hizo en su pregunta, el módulo dateutil (http://labix.org/python-dateutil) tiene un excelente soporte para ese tipo de cosas.
Para ejemplos, voy a copiar y pegar desde otra respuesta que di hace un tiempo ahora:
ejemplo simple:
>>> parse("Thu Sep 25 2003")
datetime.datetime(2003, 9, 25, 0, 0)
>>> parse("Sep 25 2003")
datetime.datetime(2003, 9, 25, 0, 0)
>>> parse("Sep 2003", default=DEFAULT)
datetime.datetime(2003, 9, 25, 0, 0)
>>> parse("Sep", default=DEFAULT)
datetime.datetime(2003, 9, 25, 0, 0)
>>> parse("2003", default=DEFAULT)
datetime.datetime(2003, 9, 25, 0, 0)
Para ambiguo:
>>> parse("10-09-2003")
datetime.datetime(2003, 10, 9, 0, 0)
>>> parse("10-09-2003", dayfirst=True)
datetime.datetime(2003, 9, 10, 0, 0)
>>> parse("10-09-03")
datetime.datetime(2003, 10, 9, 0, 0)
>>> parse("10-09-03", yearfirst=True)
datetime.datetime(2010, 9, 3, 0, 0)
Para en todos los ámbitos:
>>> parse("Wed, July 10, '96")
datetime.datetime(1996, 7, 10, 0, 0)
>>> parse("1996.07.10 AD at 15:08:56 PDT", ignoretz=True)
datetime.datetime(1996, 7, 10, 15, 8, 56)
>>> parse("Tuesday, April 12, 1952 AD 3:30:42pm PST", ignoretz=True)
datetime.datetime(1952, 4, 12, 15, 30, 42)
>>> parse("November 5, 1994, 8:15:30 am EST", ignoretz=True)
datetime.datetime(1994, 11, 5, 8, 15, 30)
>>> parse("3rd of May 2001")
datetime.datetime(2001, 5, 3, 0, 0)
>>> parse("5:50 A.M. on June 13, 1990")
datetime.datetime(1990, 6, 13, 5, 50)
Tome un vistazo a la documentación aquí:
http://labix.org/python-dateutil#head-c0e81a473b647dfa787dc11e8c69557ec2c3ecd2
Ya lo he visto pero no sabía por dónde empezar, el documento es demasiado grande – OscarRyz
:(Supongo que tendré que leerlo todo – OscarRyz
@Oscar Reyes: con una pregunta vaga y abierta como la tuya , es realmente difícil precisar la línea exacta de documentación que es relevante. Podría, por ejemplo, proporcionar un fragmento de código que muestre lo que desea hacer. Podría proporcionar una pregunta más detallada. –