import re from datetime import datetime def parse_date(date_string): patterns = [ r'^(\d{4})-(\d{2})-(\d{2})$', # YYYY-MM-DD r'^(\d{2})/(\d{2})/(\d{4})$', # DD/MM/YYYY r'^(\d{2})-([A-Za-z]{3})-(\d{4})$' # DD-Mon-YYYY ] for pattern in patterns: match = re.match(pattern, date_string) if match: try: if pattern == patterns[0]: return datetime.strptime(date_string, "%Y-%m-%d") elif pattern == patterns[1]: return datetime.strptime(date_string, "%d/%m/%Y") else: return datetime.strptime(date_string, "%d-%b-%Y") except ValueError: return None return None dates = ["2023-04-01", "15/09/2022", "31-Dec-2024", "2023-13-01", "01/15/2022"] for date in dates: parsed_date = parse_date(date) if parsed_date: print(f"{date}: Valid (Parsed: {parsed_date.strftime('%Y-%m-%d')})") else: print(f"{date}: Invalid")