Cómo validar un formato específico de fecha y hora usando Python

Estoy escribiendo un progtwig para validar partes de un archivo XML. Uno de los puntos que me gustaría validar es un formato de fecha y hora. He leído en el foro sobre el uso de time.strptime() pero los ejemplos no funcionaban del todo y estaban un poco por encima de mi experiencia. Alguien tiene alguna idea de cómo podría validar lo siguiente. Este es el formato en el que deben estar la fecha y la hora.

 2/26/2009 3:00 PM 

Estoy seguro de que hay algo incorporado y muy fácil, pero no puedo encontrarlo. Muchas gracias si has corrido por esto antes y tienes sugerencias.

Sí, puedes usar datetime.strptime() :

 from datetime import datetime def validate_date(d): try: datetime.strptime(d, '%m/%d/%Y %I:%M %p') return True except ValueError: return False print validate_date('2/26/2009 3:00 PM') # prints True print validate_date('2/26/2009 13:00 PM') # prints false print validate_date('2/26/2009') # prints False print validate_date("Should I use regex for validating dates in Python?") # prints False 

Así es como lo haces:

  from datetime import datetime def validate(datetime_string): try: return datetime.strptime(datetime_string,"%m/%d/%Y %I:%M %p") except ValueError: return False 
 import datetime parsed = datetime.datetime.strptime("2/26/2009 3:00 PM", r'%m/%d/%Y %H:%M %p') iso_formatted = parsed.isoformat() print(iso_formatted) 

Puede usar el módulo de configuración regional combinado con time.strptime() para asegurarse de que la fecha y la hora time.strptime() en el orden correcto (mes, día, año, etc.). O bien, podrías hacer expresiones regulares …

pattern = re.compile(r'\d{1,2}/\d{1,2}/\d{4} \d{1,2}:\d{2} (AM|PM)') . ..No soy un regex pro lol, probablemente hay un mejor patrón.

También puede usar el módulo datetime y crear un nuevo objeto datetime con la constante local y hacer que convierta los números a su tipo adecuado (día, mes, año).

¡Buena suerte!