Converting date and time from String format to Python datetime object: ValueError: time data '... p.m.' does not match format '... %p'

Converting date and time from String format to Python datetime object: ValueError: time data '... p.m.' does not match format '... %p'

我有以下字符串格式的日期和时间:

dateTime = '21-03-2015 12:20 p.m.'

我想将它转换成 Python 日期时间对象。我正在做类似下面的事情:

dateTimeObj = datetime.datetime.strptime(dateTime, '%d-%m-%Y %I:%M %p')

但我不断收到以下错误:

ValueError: time data '21-03-2015 12:20 p.m.' does not match format '%d-%m-%Y %I:%M %p'

只是似乎没有明白我做错了什么。任何解决方案将不胜感激。

根据文档,%p 仅支持 AMPMampm 格式,因此 a.m.a m 等是不支持的格式。现在问题出在您尝试的日期格式上,如果您无法更改日期格式,则可以使用:

import datetime

d = '21-03-2015 12:20 p.m.'

d = d.replace(".", "")    #Substituting the periods with ""

dateTimeObj = datetime.datetime.strptime(d, '%d-%m-%Y %I:%M %p')

问题在于:p.m.,与 %p 不匹配。

如果您检查 https://docs.python.org/2/library/datetime.html,您会发现唯一可接受的值是:am, pm, AM, PM.

因此,要解决此问题,您必须更改输入字符串以使用不含句点的 pm