Search code examples
pythondatetimestrptime

How can I account for period (AM/PM) using strftime?


Specifically I have code that simplifies to this:

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)

What gives? Does Python just ignore the period specifier when parsing dates or am I doing something stupid?


Solution

  • The Python time.strftime docs say:

    When used with the strptime() function, the %p directive only affects the output hour field if the %I directive is used to parse the hour.

    Sure enough, changing your %H to %I makes it work.