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

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

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

Specifically I have code that simplifies to this:

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)

What gives? Does Python just ignore the period specifier when parsing dates or am I doing something stupid?


回答 0

Python time.strftime文档说:

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

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

The Python time.strftime docs say:

When used with the strptime() function, the %p directive only affects the output hour field if the %I directive is used to parse the hour.

Sure enough, changing your %H to %I makes it work.


回答 1

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

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

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

The format is using %H instead of %I. Since %H is the “24-hour” format, it’s likely just discarding the %p information. It works just fine if you change the %H to %I.


回答 2

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

You used %H (24 hour format) instead of %I (12 hour format).


回答 3

尝试将%H(24小时制)设置为%I(12小时制)。

Try replacing %H (Hour on a 24-hour clock) with %I (Hour on a 12-hour clock) ?


声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。