Django string to date format Django string to date format django django

Django string to date format


It should be %Y-%m-%d:

>>> s = "2014-04-07">>> datetime.datetime.strptime(s, "%Y-%m-%d").date()datetime.date(2014, 4, 7)

According to the documentation:

  • %Y stands for a year with century as a decimal number
  • %m - month as a zero-padded decimal number
  • %d - day of the month as a zero-padded decimal number

Hope that helps.


It might be convenient to use django's dateparse in this case.

from django.utils.dateparse import parse_datedate_str = request.POST.get('date')date = parse_date(date_str)


django.utils.dateparse.parse_date function will return None if given date not in %Y-%m-%d format

I have not found a function in django source code to parse string by DATE_INPUT_FORMATS. So I wrote a custom helper function for that and I have added to here for help others.

from datetime import datetimefrom django.utils.formats import get_formatdef parse_date(date_str):    """Parse date from string by DATE_INPUT_FORMATS of current language"""    for item in get_format('DATE_INPUT_FORMATS'):        try:            return datetime.strptime(date_str, item).date()        except (ValueError, TypeError):            continue    return None