如何使用datetime.strptime计算期间(上午/下午)?

时间:2009-11-18 22:04:42

标签: python 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在解析日期时是否忽略了句点说明符,还是我做了一些愚蠢的事情?

5 个答案:

答案 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