Как я могу указать период (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-часовом часе)?