在我的应用程序中,用户可以使用日期分隔符变体输入日期格式为dd / mm / yy(就像他们可以使用/, - 或空格作为分隔符)。他们也可以输入4位数的年份或2位数年份,他们也可以输入一个月的3个字母代码或月份的2个数字代码。一旦我收到用户的日期,我想验证格式是有效的日期格式,然后将其转换为'%d-%b-%Y'。在下面的函数中,我正在验证日期格式,但我不知道如何处理所有混合日期分隔符格式,如01/12 2013,01-12 13,01 / 2013/2013等。可以加载这些
def validate_date(date_str):
formats = ['%d-%b-%Y', '%d-%b-%y', '%d-%m-%Y', '%d-%m-%y',
'%d/%m/%Y', '%d/%m/%y', '%d/%b/%Y', '%d/%b/%y',
'%d %m %Y', '%d %m %y', '%d %b %Y', '%d %b %y',
'%d%m%Y', '%d%b%y', '%d%b%Y', '%d %b/%Y']
data = None
for fmt in formats:
try:
dateValue = datetime.datetime.strptime(date_str, fmt).date()
data = dateValue
break
except ValueError:
pass
if data is None:
# invalid date format
答案 0 :(得分:0)
您可以将所有不是数字的字符替换为空格,然后使用更少的格式对其进行解析。