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 に答える