Python 如何使用strftime计算时段(上午/下午)?
具体而言,我的代码可以简化为:Python 如何使用strftime计算时段(上午/下午)?,python,datetime,strptime,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) 有什么好处?Python是在解析日期时忽略
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是在解析日期时忽略了句点说明符,还是我在做一些愚蠢的事情?Python说:
当与strtime()函数一起使用时,只能使用%p
指令
如果使用%I
指令进行分析,则会影响输出小时字段
时间到了
当然,将%H
更改为%I
会使其正常工作。尝试将%H(24小时制的小时)替换为%I(12小时制的小时)?您使用了%H
(24小时制)而不是%I
(12小时制)
格式使用的是%H
而不是%I
。由于%H
是“24小时”格式,它很可能只是丢弃%p
信息。如果您将%H
更改为%I
,它就可以正常工作
>>> from datetime import datetime
>>> print(datetime.today().strftime("%H:%M %p"))
15:31 AM
尝试将
%I
替换为%H
,除非您的时间字符串为0.00pm,(%I
从1开始)@现在是下午12点或凌晨12点。不确定上午0点或下午0点是否有意义。只有在24小时格式下,第0小时才有意义,但不是上午/下午。还要注意检查您的区域设置。如果您使用的区域设置不使用a.m./p.m.,则必须切换到使用a.m./p.m.的区域设置。我使用了%I和%p,并且在使用de_de作为区域设置时将%p留空。切换到en_GB使%p可见。欢迎使用StackOverflow。虽然这段代码可以解决这个问题,但如何以及为什么解决这个问题将真正有助于提高您的帖子质量,并可能导致更多的投票。请记住,你是在将来回答读者的问题,而不仅仅是现在提问的人。请编辑您的答案,添加解释,并说明适用的限制和假设。
>>> from datetime import datetime
>>> print(datetime.today().strftime("%H:%M %p"))
15:31 AM