Как я могу указать период (AM/PM) с datetime.strptime?

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

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 просто игнорирует спецификатор периода при разборе дат или я делаю что-то глупое?

Ответ 1

Python time.strftime docs говорит:

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

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

Ответ 2

format = '%Y-%m-%d %H:%M %p'

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

Ответ 3

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

Ответ 4

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