Last modified: May 22, 2025 By Alexander Williams

Fix ValueError: Time Data Format Mismatch

Python's datetime module is powerful for handling dates and times. But it can raise ValueError when parsing strings if the format doesn't match. This article explains how to fix it.

What Causes the ValueError?

The error occurs when using strptime() to convert a string to datetime. The string format must exactly match the specified format. Even small differences cause errors.


from datetime import datetime

# This will raise ValueError
date_str = "2023-12-25"
datetime.strptime(date_str, "%d/%m/%Y")


ValueError: time data '2023-12-25' does not match format '%d/%m/%Y'

How to Fix the Format Mismatch

To fix this, ensure your format string matches the input exactly. Use format codes like %Y for year and %m for month.


from datetime import datetime

# Correct format matching
date_str = "25/12/2023"
datetime.strptime(date_str, "%d/%m/%Y")  # Works!

Common Format Codes

Here are the most used format codes:

  • %Y - 4-digit year (2023)
  • %m - 2-digit month (01-12)
  • %d - 2-digit day (01-31)
  • %H - 24-hour clock (00-23)

For a full list, check Python's datetime documentation.

Handling Different Date Formats

Sometimes you need to parse multiple formats. Use try-except blocks as shown in our guide on catching ValueError.


from datetime import datetime

def parse_date(date_str):
    formats = ["%Y-%m-%d", "%d/%m/%Y", "%m-%d-%Y"]
    for fmt in formats:
        try:
            return datetime.strptime(date_str, fmt)
        except ValueError:
            continue
    raise ValueError("No valid format found")

Best Practices

Follow these tips to avoid time format errors:

  1. Always validate input strings first
  2. Use consistent date formats in your application
  3. Handle errors gracefully with try-except

For more tips, see our article on avoiding ValueError.

Conclusion

The ValueError for time data format mismatch is common but easy to fix. Match your format string exactly to the input. Use proper format codes and handle multiple formats carefully. With these techniques, you'll parse dates reliably.