Ho bisogno di convertire una stringa in un oggetto datetime, insieme ai secondi frazionari. Sto incontrando vari problemi.stringa a datetime con secondi frazionari, su Google App Engine
Normalmente, vorrei fare:
>>> datetime.datetime.strptime(val, "%Y-%m-%dT%H:%M:%S.%f")
Ma gli errori e vecchi documenti mi ha mostrato che strptime di python2.5 non ha% f ...
Indagare ulteriormente, sembra che l'App Engine all'archivio dati non piacciono i secondi frazionari. Al momento la modifica di un'entità archivio dati, provando ad aggiungere 0,5 al campo datetime mi ha dato il seguente errore:
ValueError: unconverted data remains: .5
dubito che frazioni di secondo non sono supportati ... quindi questo è solo sul visore datastore, giusto?
Qualcuno ha aggirato questo problema? Voglio utilizzare gli oggetti datetime nativi ... Preferisco non memorizzare i timestamp UNIX ...
Grazie!
MODIFICA: Grazie a Jacob Oscarson per il suggerimento .replace (...)!
Una cosa da tenere a mente è controllare la lunghezza di nofrag prima di inserirla. Diverse fonti usano una precisione diversa per secondi.
Ecco un rapido funzione per chi cerca qualcosa di simile:
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))
Grazie! Stavo davvero cercando qualcosa di simile. =) – PEZ