首页 > 解决方案 > 在 strptime 中占 AM PM 不起作用

问题描述

我在这里关注另一个搜索线程,但它不起作用。每当我包含 %p 以获取 AM/PM 时,我都会收到以下错误:

ValueError:时间数据“11:30”与格式“%I:%M%p”不匹配

如果我有 '%I:%M %p' 或 '%I:%M%p',这是真的。如果我将 %p 关闭,它可以正常工作,但这违背了获得 AM PM 的目的

# my code
from datetime import datetime
date_string = '11:30'
format = '%I:%M %p'
my_date = datetime.strptime(date_string, format)
my_date.strftime(format)

标签: pythondatetime

解决方案


您只需要提供与strptime功能时间相同的格式。然后在函数中使用 AM/PM 格式('%I:%M %p')strftime

from datetime import datetime

def getTime(time_string):
    time_object = datetime.strptime(time_string,'%H:%M') #Covert string to time object
    return time_object.strftime('%I:%M %p') #Convert time object to AM/PM format

getTime('11:30')
Output: 11:30 am
getTime('13:30')
Output: 01:30 pm

推荐阅读