具体而言,我的代码简化为:
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在解析日期时是否忽略了句点说明符,还是我做了一些愚蠢的事情?
答案 0 :(得分:164)
Python time.strftime
docs说:
与strptime()函数一起使用时,仅使用
%p
指令 如果使用%I
指令进行解析,则会影响输出小时字段 小时。
果然,将%H
更改为%I
会使其有效。
答案 1 :(得分:40)
format = '%Y-%m-%d %H:%M %p'
格式使用的是%H
,而不是%I
。由于%H
是“24小时”格式,因此很可能只丢弃%p
信息。如果您将%H
更改为%I
,则可以正常使用。
答案 2 :(得分:18)
您使用了%H
(24小时格式)而不是%I
(12小时格式)。
答案 3 :(得分:13)
尝试用%I(12小时制的小时)替换%H(24小时制的小时)?
答案 4 :(得分:2)
>>> from datetime import datetime
>>> print(datetime.today().strftime("%H:%M %p"))
15:31 AM
尝试将%I
替换为%H
。