Мне нужно преобразовать строку в объект datetime вместе с долями секунды.Я сталкиваюсь с различными проблемами.
Обычно я делал бы:
>>> datetime.datetime.strptime(val, "%Y-%m-%dT%H:%M:%S.%f")
Но ошибки и старые документы показали мне, что strptime в python2.5 не имеет% f ...
При дальнейшем исследовании кажется, что хранилище данных App Engine не любит доли секунды.После редактирования сущности хранилища данных попытка добавить .5 в поле datetime вызвала следующую ошибку:
ValueError: unconverted data remains: .5
Я сомневаюсь, что дробные секунды не поддерживаются ... так что это только в средстве просмотра хранилища данных,верно?
Кто-нибудь обошел эту проблему?Я хочу использовать нативные объекты даты и времени ... Я скорее не храню метки времени UNIX ...
Спасибо!
РЕДАКТИРОВАТЬ: Спасибо Джейкобу Оскарсону за .replace (...) tip!
Следует помнить одну вещь: проверять длину nofrag перед подачей. Различные источники используют различную точность для секунд.
Вот быстрая функция для тех, кто ищетчто-то похожее:
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))