Django string to date format

后端 未结 3 1774
醉梦人生
醉梦人生 2020-12-25 11:36

I want to convert my string date to django date format. I tried a method. but did not work.

date = datetime.datetime.strptime(request.POST.get(\'date\'),\"         


        
相关标签:
3条回答
  • 2020-12-25 11:40

    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.

    0 讨论(0)
  • 2020-12-25 11:45

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

    from django.utils.dateparse import parse_date
    date_str = request.POST.get('date')
    date = parse_date(date_str)
    
    0 讨论(0)
  • 2020-12-25 11:46

    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 datetime
    from django.utils.formats import get_format
    
    def 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
    
    0 讨论(0)
提交回复
热议问题