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

Tri*_*ych 133 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)
Run Code Online (Sandbox Code Playgroud)

是什么赋予了?Python在解析日期时是否忽略了句点说明符,还是我做了一些愚蠢的事情?

Ned*_*der 183

Python time.strftime文档说:

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

果然,改变你的%H方式%I使它成功.

  • @AndyHayden 现在是中午 12 点或上午 12 点。不确定 0 AM 或 0 PM 是否有意义。仅在 24 小时格式中,第 0 小时才有意义,但此时不是 AM/PM。 (4认同)
  • 这很棒*除非*您的时间字符串有 0.00pm,(`%I` 从 1 开始)!! (2认同)

jam*_*san 50

format = '%Y-%m-%d %H:%M %p'
Run Code Online (Sandbox Code Playgroud)

格式使用%H而不是%I.由于%H是"24小时"格式,它可能只是丢弃%p信息.如果你改变了它的工作原理就好%H%I.


Sat*_*and 24

尝试替换%I%H.

from datetime import datetime
print(datetime.today().strftime("%H:%M %p")) # 15:31 AM
Run Code Online (Sandbox Code Playgroud)

成为

from datetime import datetime
print(datetime.today().strftime("%I:%M %p")) # 03:31 AM
Run Code Online (Sandbox Code Playgroud)


Tim*_*ker 21

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


kei*_*ant 15

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