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

问题描述:

具体来说,我有一些代码简化为这样:如何使用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在分析日期时是否忽略周期说明符还是我在做一些愚蠢的事情?

+4

感谢大家的快速解答。希望我可以多劳多得。 – Triptych 2009-11-18 22:12:01

Python的time.strftime docs说:

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

果然,将您的%H更改为%I使其工作。

+1

呃。当然。谢谢。 – Triptych 2009-11-18 22:10:00

+0

哪个好*除非*您的时间字符串有0.00pm,('%I'从1开始)!! – 2015-04-20 23:10:40

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

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

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

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