Почему strptime и strftime ведут себя по-разному, и что вы делаете с этим? - PullRequest
2 голосов
/ 29 ноября 2011

Я на Python 2.5 и работаю в App Engine, делаю нумерацию страниц с кодом, похожим на:

NEXT_FORMAT = "%Y-%m-%d %H:%M:%S"

current = model.completed_on.strftime(NEXT_FORMAT)

completed_before = datetime.datetime.strptime(current, NEXT_FORMAT)

Время от времени strftime будет пропускать время, похожее на 2011-11-24 05:13:54.355436, а затем взорвется strptime, пытаясь съесть его с

ValueError: unconverted data remains: .355436

Итак, почему, если вы используете формат, в котором% S является секундами в виде десятичного числа, это создает число с плавающей запятой? И это произойдет, почему strptime не справляется с этим так же?

1 Ответ

7 голосов
/ 29 ноября 2011

Измените это на:

NEXT_FORMAT = "%Y-%m-%d %H:%M:%S.%f"

Это также преобразует микросекундную часть.

Или, если вы хотите обрезать микросекунды, вы можете использовать replace перед вызовом strptime.

current = current.replace(microsecond=0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...