181

具体来说,我有代码可以简化为:

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

4

5 回答 5

263

Pythontime.strftime文档说:

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

果然,改变你%H%I让它工作。

于 2009-11-18T22:07:33.107 回答
75
format = '%Y-%m-%d %H:%M %p'

格式使用%H而不是%I. 由于%H是“24 小时”格式,因此很可能只是丢弃了%p信息。如果您将其更改%H%I.

于 2009-11-18T22:09:19.613 回答
29

您使用%H(24 小时制)而不是%I(12 小时制)。

于 2009-11-18T22:09:19.020 回答
18

尝试用 %I(12 小时制的小时)替换 %H(24 小时制的小时)?

于 2009-11-18T22:08:59.473 回答
8
>>> from datetime import datetime
>>> print(datetime.today().strftime("%H:%M %p"))
15:31 AM

尝试替换%I%H.

于 2020-11-04T14:04:06.957 回答