您可以使用try/except
catchValueError
来尝试使用不匹配的格式时发生的情况。如@Bakuriu所述,您可以在找到匹配项时停止迭代以避免不必要的解析,然后在my_date
未定义因为未找到匹配格式而定义行为时:
您可以使用try/except
catchValueError
来尝试使用不匹配的格式时发生的情况:
from datetime import datetime
DATE_FORMATS = ['%m/%d/%Y %I:%M:%s %p', '%Y/%m/%d %H:%M:%s', '%d/%m/%Y %H:%M', '%m/%d/%Y', '%Y/%m/%d']
test_date = '2012/1/1 12:32:11'
for date_format in DATE_FORMATS:
try:
my_date = datetime.strptime(test_date, date_format)
except ValueError:
pass
else:
break
else:
my_date = None
print my_date # 2012-01-01 12:32:11
print type(my_date) # <type 'datetime.datetime'>