Necesito convertir una cadena en un objeto datetime, junto con los segundos fraccionarios. Me encuentro con varios problemas.cadena a fecha y hora fraccional, en Google App Engine
Normalmente, yo haría:
>>> datetime.datetime.strptime(val, "%Y-%m-%dT%H:%M:%S.%f")
Pero los errores y documentos viejos me mostró strptime de que no tiene python2.5% f ...
Al investigar más, parece que la App Engine al almacén de datos no le gustan los segundos fraccionarios. Tras la edición de una entidad del almacén de datos, se trata de añadir 0,5 al campo de fecha y hora me dio el siguiente error:
ValueError: unconverted data remains: .5
dudo que las fracciones de segundo no son compatibles ... así que esto es sólo en el visor del almacén de datos, ¿verdad?
¿Alguien ha eludido este problema? Quiero utilizar los objetos nativos datetime ... Prefiero no almacenar marcas de tiempo UNIX ...
¡Gracias!
EDIT: Gracias a Jacob Oscarson por la .replace (...) tip!
Una cosa a tener en cuenta es verificar la longitud de nofrag antes de alimentarlo. Diferentes fuentes usan diferente precisión por segundos.
Aquí es una función rápida para aquellos que buscan algo similar:
def strptime(val):
if '.' not in val:
return datetime.datetime.strptime(val, "%Y-%m-%dT%H:%M:%S")
nofrag, frag = val.split(".")
date = datetime.datetime.strptime(nofrag, "%Y-%m-%dT%H:%M:%S")
frag = frag[:6] # truncate to microseconds
frag += (6 - len(frag)) * '0' # add 0s
return date.replace(microsecond=int(frag))
Gracias! Realmente estaba buscando algo similar. =) – PEZ