How can I account for period (AM/PM) with datetime.strptime?
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?
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.
format = '%Y-%m-%d %H:%M %p'
The format is using %H instead of %I. Since %H is the "24-hour" format, it's likely just discarding the %p information. It works just fine if you change the %H to %I.
You used %H (24 hour format) instead of %I (12 hour format).
Try replacing %H (Hour on a 24-hour clock) with %I (Hour on a 12-hour clock) ?