1

在我的应用程序中,用户可以输入带有日期分隔符变体的 dd/mm/yy 格式的日期(就像他们可以使用 /,- 或空格作为分隔符一样)。他们还可以输入 4 位数的年份或 2 位数的年份,还可以输入 3 个字母的月份代码或 2 位数的月份代码。一旦我从用户那里得到日期,我想验证该格式是有效的日期格式,然后将其转换为“%d-%b-%Y”。在下面的函数中,我正在验证日期格式,但我不确定如何处理所有混合日期分隔符格式,如 01/12 2013、01-12 13、01 12/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
4

1 回答 1

0

您可以将所有不是数字的字符替换为空格,然后使用更少的格式对其进行解析。

于 2013-09-03T10:59:54.257 回答