如何使用strftime处理AM/PM时间格式?

220 投票
5 回答
229398 浏览
提问于 2025-04-15 16:09

具体来说,我有一段代码简化成了这样:

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 个回答

36

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

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

这个格式用的是 %H 而不是 %I。因为 %H 是“24小时”格式,所以它可能只是忽略了 %p 的信息。如果你把 %H 改成 %I,就可以正常工作了。

312

Python的time.strftime文档中提到:

当和strptime()函数一起使用时,%p这个指令只会影响输出的小时部分,前提是你使用%I来解析小时。

果然,把你的%H换成%I就能正常工作了。

撰写回答