Как я могу учесть период (AM / PM) с datetime.strptime? - PullRequest
124 голосов
/ 19 ноября 2009

В частности, у меня есть код, который упрощает это:

from datetime import datetime
date_string = '2009-11-29 03:17 PM'
format = '%Y-%m-%d %H:%M %p'
my_date = datetime.strptime(date_string, format)

# This prints '2009-11-29 03:17 AM'
print my_date.strftime(format)

Что дает? Python просто игнорирует спецификатор периода при разборе дат или я делаю что-то глупое?

Ответы [ 4 ]

169 голосов
/ 19 ноября 2009

Питон time.strftime документы говорят:

При использовании с функцией strptime () только директива %p влияет на поле выходного часа, если для анализа используется директива %I час.

Конечно, изменение %H на %I заставляет его работать.

41 голосов
/ 19 ноября 2009
format = '%Y-%m-%d %H:%M %p'

Формат использует %H вместо %I.Поскольку %H является 24-часовым форматом, скорее всего, он просто отбрасывает информацию %p.Это работает просто отлично, если вы измените %H на %I.

18 голосов
/ 19 ноября 2009

Вы использовали %H (24-часовой формат) вместо %I (12-часовой формат).

13 голосов
/ 19 ноября 2009

Попробуйте заменить% H (Часы на 24-часовых часах) на% I (Часы на 12-часовых часах)?

...