我正在寻找从字符串中解析日期。这个字符串可以包含不同的格式,我事先并不知道。
from datetime import datetime
try:
return datetime.strptime(text, '%m/%d/%Y'))
except:
try:
return datetime.strptime(text, '%m/%d/%y'))
except:
try:
return datetime.strptime(text, '%Y/%m/%d'))
except:
try:
return datetime.strptime(text, '%b%d/%Y'))
except:
return None
显然,这看起来太冗长了。我确信使用地图有更好的方法,但我真的很想听听你的意见 - 我讨厌重新发明轮子。
答案 0 :(得分:6)
from datetime import datetime
def getdate(text):
formats = ('%m/%d/%Y', '%m/%d/%y', '%Y/%m/%d', '%b%d/%Y')
for format in formats:
try:
return datetime.strptime(text, format)
except:
pass
答案 1 :(得分:4)
如何循环使用提供的格式优先级?
from datetime import datetime
def convert(text):
for format in [ '%m/%d/%Y', '%m/%d/%y', '%Y/%m/%d', '%b%d/%Y' ]:
try:
return datetime.strptime(text, format)
except:
continue
return None
答案 2 :(得分:3)