将多个日期格式解析为特定格式

时间:2013-09-03 10:36:32

标签: python date date-formatting date-parsing

在我的应用程序中,用户可以使用日期分隔符变体输入日期格式为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

1 个答案:

答案 0 :(得分:0)

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