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

时间:2017-11-10 14:29:55

标签: python python-3.x datetime strptime

我想以一种可能的格式转换字符串(%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 OR%d。%m。%Y%H:%M:%S但是我不确定如何添加第3种格式。我尝试将其添加为除外,但它永远不会被触发。

我是在正确的轨道上还是有更好的方法来做到这一点?

由于

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

你可以这样做,检查字符串的长度,并使用三者中的相应格式

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