ValueError: unconverted data remains al convertir una cadena a datetime

publicado por: Anonymous

Importo la librería

import datetime

Consulto y traigo la fecha

miFecha.set(BBDDEscuela[6])
c=miFecha
Calculo_Dias(c)
miConexion.commit()

Función para restar las dos fechas

def Calculo_Dias(b):
    a = datetime.datetime.today()
    f = datetime.datetime.strptime(str(b.get()), '%d/%m/%y')
    miDias.set((a-f).days)

Me aparece este error

ValueError: unconverted data remains: 90

b es una StringVar cuyo contenido en este caso es "09/07/1990"

solución

El error:

ValueError: unconverted data remains:

ocurre cuando el formato pasado a datetime.datetime.strptime es inicialmente correcto, pero tras parsear la cadena de acuerdo al formato quedan caracteres remanentes en ella que no han sido convertidos.

En este caso la cadena es:

"09/07/1990"

y el formato es:

'%d/%m/%y'

el problema es que y indica el año mediante dos caracteres añadiendo un cero a la izquierda si es necesario sin la centena, es decir en vez de “1990” espera “90”. Esto hace que al parsear la cadena se quede con 19 como año y queda "90" en la cadena sin parsear. Como que queden caracteres sin parsear suele significar que el formato o la fecha son incorrectos (como en este caso) se lanza una excepción.

>>> datetime.datetime.strptime("09/07/1990", '%d/%m/%y')
ValueError: unconverted data remains: 90

El código correcto es Y (año con las centenas) no y:

>>> datetime.datetime.strptime("09/07/1990", '%d/%m/%Y')
datetime.datetime(1990, 7, 9, 0, 0

Para más información ver:

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *