2015-07-27 2 views
-1

Я пытаюсь разобрать временную дату строку типа даты и времени, вот мой код:Python datetime.strptime вопрос

import datetime 

print datetime.datetime.strptime('01/01/2002 00:00:00', "%d/%m/%y %H:%M:%S") 

Однако я получил ошибку:

ValueError: time data '01/01/2002 00:00:00' does not match format '%d/%m/%y %H:%M:%S'

мая Я знаю, как это исправить?

Большое спасибо.

+1

Как указывали другие, капитализация важна для формата даты и времени, на самом деле существует тонна параметров. Вы можете увидеть все из них [здесь] (https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior). – SuperBiasedMan

+0

Возможно, вы захотите использовать библиотеку [стрелка] (http://crsmithdev.com/arrow/). Это значительно облегчает жизнь с датой/временем в python. – UloPe

ответ

2

Ваш формат года неверен. Она должна быть прописной Y:

>>> print datetime.datetime.strptime('01/01/2002 00:00:00', "%d/%m/%Y %H:%M:%S") 
2002-01-01 00:00:00 

Я уверен, что вы видели это, но документация для возможных значений here

+0

Вы отправили несколько секунд до меня, поэтому я допускаю поражение;) Просто хочу указать, что в вашем ответе «% d» и «% m» имеют переключаемые позиции. OP имеет их наоборот. Трудно сказать, что правильно из-за даты, используемой в примере. [ISO8601] (https://xkcd.com/1179/)! –

+0

Вы уверены? Либо я пропустил его, либо отредактировал OP, но мой код соответствует тому, что опубликовано. Ваш [PSA] (https://xkcd.com/1179/) находится на месте, хотя – Andy

+0

Вы правы. Это смешно, я скопировал вопрос, но теперь я не вижу никаких изменений. Неважно! Возможно, они что-то изменили в Матрице. ** Изменить ** или это запутанный «льготный период». –

1

Вы должны изменить %y к %Y, за год с полным века.

>>> datetime.datetime.strptime('01/01/2002 00:00:00', "%m/%d/%Y %H:%M:%S") 
datetime.datetime(2002, 1, 1, 0, 0) 

Пожалуйста, смотрите strftime() and strptime() Behavior секцию даты и времени документы.

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