Konieczne jest przekonwertowanie ciągu na obiekt typu datetime wraz z ułamkowymi sekundami. Występują różne problemy.Łańcuch do datetime z ułamkowymi sekundami, w Google App Engine
Normalnie zrobiłbym:
>>> datetime.datetime.strptime(val, "%Y-%m-%dT%H:%M:%S.%f")
Ale błędy i stare docs pokazał mi strptime tego python2.5 za nie posiada% f ...
Badając dalej, wydaje się, że na App Engine magazyn danych nie lubi ułamków sekund. Po edycji podmiot magazynu danych, starając się dodać .5 pola datetime dał mi następujący błąd:
ValueError: unconverted data remains: .5
wątpię, że ułamków sekund nie są obsługiwane ... więc to tylko na widza magazynu danych, prawda?
Czy ktoś omijał ten problem? Chcę używać natywnych obiektów datetime ... Raczej nie zapisuję znaczników czasu UNIX ...
Dzięki!
EDYCJA: Dzięki Jacobowi Oscarsonowi za końcówkę .replace (...)!
Należy pamiętać o sprawdzeniu długości nofrag przed jej wprowadzeniem. Różne źródła używają różnej dokładności przez kilka sekund.
Oto krótki funkcja dla tych, którzy szukają czegoś podobnego:
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))
Dzięki! Naprawdę szukałem czegoś podobnego. =) – PEZ