No se puede analizar la fecha en Python

Necesito analizar fecha y hora. Aquí está lo que tengo:

import time a = time.strptime('Apr 28 2013 23:01', "%b %d %y %H:%M") print a 

Pero me da

 Traceback (most recent call last): File "/home/aaa/Documents/python_test.py", line 17, in  a = time.strptime('Apr 28 2013 23:01', "%b %d %y %H:%M") File "/usr/lib/python2.7/_strptime.py", line 467, in _strptime_time return _strptime(data_string, format)[0] File "/usr/lib/python2.7/_strptime.py", line 325, in _strptime (data_string, format)) ValueError: time data 'Apr 28 2013 23:01' does not match format '%b %d %y %H:%M' 

¿Qué estoy haciendo mal?

%y debe ser %Y para un año de 4 dígitos …

De los documentos :

 %y Year without century as a decimal number [00,99]. %Y Year with century as a decimal number. 

Usted puede

 import time a = time.strptime('Apr 28 2013 23:01', "%b %d %Y %H:%M") print time.strftime("%d/%m/%Y",a) 

con Y . Le sigue una línea de conversión de código, y da resultado

28/04/2013

La respuesta de Jon es, por supuesto, correcta, pero como notaste, estas cosas pueden ser difíciles de encontrar.

Como una sugerencia general para la depuración de problemas de strptime , recomiendo imprimir una datetime y datetime conocida usando la cadena de formato que usa para analizar:

 from datetime import datetime d = datetime(2013, 4, 28, 23, 1) print d.strftime("%b %d %y %H:%M") print 'Apr 28 2013 23:01' 

Una comparación visual de las líneas de salida:

 Apr 28 13 23:01 Apr 28 2013 23:01 

encuentra el problema rápidamente y también funciona cuando la cadena de formato es correcta, pero está trabajando con una configuración regional diferente (p. ej., en español donde esperaría ‘Abr’ en lugar de ‘Apr’)