如何使用strftime来计算期间(AM / PM)?


152

具体来说,我有简化此代码:

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

Answers:


213

Python time.strftime文档说:

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

果然,将其更改%H%I有效。


2
除非您的时间字符串具有0.00pm,(%I从1开始),否则这很好!
安迪·海登

1
@AndyHayden现在是12 PM或12 AM。不确定0 AM还是0 PM是否有意义。只有第24小时格式才是第0小时,但那不是AM / PM。
阿伦

另请注意检查您的语言环境。如果您使用的语言环境不使用am / pm,则必须切换到使用am / pm的语言环境,而我使用%I和%p,而在将de_DE用作语言环境时,%p留为空白。切换到en_GB使%p可见。
Torsten

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

格式使用%H代替%I。由于%H是“ 24小时制”格式,因此很可能只是丢弃%p信息。它的工作原理,如果你改变了就好%H%I



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.