如何使用strftime计算时间段(AM/PM) ?

具体来说,我有这样的代码:

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

190102 次浏览

Python time.strftime文档说:

当与strptime()函数一起使用时,只能使用%p指令 如果%I指令用于解析,则会影响输出小时字段 小时。< / p >

果然,将你的%H改为%I可以使它工作。

尝试将%H(24小时时钟上的小时)替换为%I(12小时时钟上的小时)?

你使用了%H(24小时格式)而不是%I(12小时格式)。

format = '%Y-%m-%d %H:%M %p'

格式是使用%H而不是%I。由于%H是“24小时”格式,它很可能只是丢弃了%p信息。如果你将%H改为%I,它就可以正常工作。

>>> from datetime import datetime
>>> print(datetime.today().strftime("%H:%M %p"))
15:31 AM

尝试用%H替换%I