Python 转换为具有不同长度字符串的 %Y-%m-%d %H:%M

Python Convert to %Y-%m-%d %H:%M With Different Length Strings

我想将字符串转换为其中一种可能的格式(%d.%m.%Y %H:%M OR %d.%m.%Y %H:%M:%S OR % d.%m.%Y) 到 %Y-%m-%d %H:%M

目前我使用的代码如下:

newMessageDate = log.get('messageDate')
        try:
            newMessageDate = datetime.datetime.strptime(newMessageDate,'%d.%m.%Y %H:%M').strftime('%Y-%m-%d %H:%M')
        except ValueError:
            newMessageDate = datetime.datetime.strptime(newMessageDate,'%d.%m.%Y %H:%M:%S').strftime('%Y-%m-%d %H:%M:%S') 

如果字符串在 %d.%m.%Y %H:%M 或 %d.%m.%Y %H:%M:%S 中,它工作正常,但我不确定如何添加第三种格式。我尝试将其添加为例外,但它从未被触发。

我走在正确的轨道上还是有更好的方法?

谢谢

您可以通过检查字符串的长度并使用三者中的相应格式来执行此操作,

if len(newMessageDate)==15:
    newMessageDate = alpha
elseif len(newMessageDate)==13:
    newMessageDate = beta
elseif len(newMessageDate)==10:
    newMessageDate = gamma

您可以列出可能的格式并逐一尝试。

date_formats = ["%d.%m.%Y %H:%M", "%d.%m.%Y %H:%M:%S", "%d.%m.%Y", "%d.%m.%Y %H:%M"]
for date_fmt in date_formats:
    try:
        newMessageDate = datetime.datetime.strptime(newMessageDate, date_fmt).strftime('%Y-%m-%d %H:%M')
    except ValueError:
        continue
    else:
        break