python strptime formato incorrecto con hora de 12 horas

Mi formato de cadena actualmente es datetime.strptime(date_as_string, '%d/%m/%y %I:%M %p')

esto lamentablemente no funciona con entradas como 1/12/07 00:07 AM

¿Cómo puedo hacer que strptime reconozca este formato?

EDIT:

ValueError: los datos de tiempo '1/12/07 00:07 AM' no coinciden con el formato '%d/%m/%y %I:%M %p'

preguntado el 22 de mayo de 12 a las 18:05

%Debería reconocer el 0. ¿Puede publicar más detalles, como un mensaje de error? -

Eso es porque '00' no es un válido 12 horas a dia. hora. -

2 Respuestas

'00' no es una hora válida de 12 horas, pero si su cadena de fecha de entrada tiene un formato inconsistente, es posible que pueda salirse con la suya con algo como esto:

>>> from datetime import datetime as dt
>>> date_as_string = '1/12/07 00:07 AM'
>>> format_12 = '%d/%m/%y %I:%M %p'
>>> format_24 = '%d/%m/%y %H:%M %p'
>>> date_string, time_string = date_as_string.split(' ', 1)
>>> try:
...     dt.strptime(date_string + ' ' + time_string, format_12)
... except ValueError:
...     dt.strptime(date_string + ' ' + time_string, format_24)
... 
datetime.datetime(2007, 12, 1, 0, 7)

contestado el 22 de mayo de 12 a las 18:05

Tienes razón, este está funcionando. Mi error está en otra parte, edito mi pregunta: Ponytech

@zepatou He editado mi respuesta para que coincida con su pregunta actualizada. - kojiro

¡Eso está funcionando, gracias! ¿Debería editar el título de mi pregunta para reflejar mejor cuál era mi problema? - Ponytech

@zepatou Si cree que puede mejorar la capacidad de encontrar su pregunta, entonces por todos los medios. :) - kojiro

'1/12/07 00:07 AM' tiene un formato incorrecto porque en el formato de 12 horas la hora puede estar en el rango 1-12 y no 0.

contestado el 22 de mayo de 12 a las 18:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.