我想以一种可能的格式转换字符串(%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种格式。我尝试将其添加为除外,但它永远不会被触发。
我是在正确的轨道上还是有更好的方法来做到这一点?
由于
答案 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