2016-03-02 5 views
1

Моих данные дат и времени, как это:питон strptime правильный формат для подразделов секунд

2016-03-01 19:25:53.053404 

Я пытаюсь использовать

datetime.strptime(date, "%Y-%m-%d %HH:%MM:%SS") 

Но я получаю эту ошибку:

ValueError: time data '2016-03-01 19:24:35.165425' does not match format '%Y-%m-%d %HH:%MM:%SS' 

Как могу ли я исправить формат «%Y-%m-%d %HH:%MM:%SS», чтобы соответствовать формату datetime, который у меня есть?

+0

Благодаря @bmcculley. Я думаю, что ошибка python дает изменение, поскольку другой вопрос был отправлен 6 лет назад, поэтому я не смог найти другой ответ. – apadana

ответ

2

Это правильный формат:

datetime.strptime(date, '%Y-%m-%d %H:%M:%S.%f') 

Разбивка:

  • %H: час (24-часовые часы) в виде дополненных нулей десятичного числа.
  • %M: Минута как десятичное число с нулевым запасом.
  • %S: Второй как десятичное число с нулевым запасом.
  • %f: Микросекунда как десятичное число, с нулевой слева.
3

Вам не нужно включать два символа в часах, секундах и минутах в строку форматирования; %S «Второй как десятичное число с нулевым запасом», %H - это «Час (24-часовое время) в виде десятичного числа с нулевой добавкой» и т. Д. Также стоит отметить, что вы полностью пропускаете символ для микросекунд (%f). Вы должны добавить, что если вы хотите, чтобы ваш format_string работал.

Вот ссылка на strftime() and strptime() behavior documentation

1

Per the documentation (я рекомендую закладки, ссылающиеся, если вы планируете делать какие-либо значительные работы с датами питона и времени), правильные директивы нулей часов, минуты, и секунды, не %H, %M и %S соответственно (не удвоились символы)

Далее, ваши входные строки включают микросекунды, так что вам необходимы либо удалить те из входов или включают %f директиву, а также.

Таким образом: datetime.strptime(date, '%Y-%m-%d %H:%M:%S.%f')

Смежные вопросы