python Django字符串到日期格式

56lgkhnf  于 2022-12-25  发布在  Python
关注(0)|答案(4)|浏览(145)

我想把我的字符串日期转换成django日期格式。我尝试了一个方法。但是没有工作。

date = datetime.datetime.strptime(request.POST.get('date'),"Y-mm-dd").date()

我得到了这个错误。

time data '2014-04-07' does not match format 'Y-mm-dd'

我的代码中有什么错误。

r9f1avp5

r9f1avp51#

它应该是%Y-%m-%d

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

根据文档:

  • %Y表示年份,世纪为十进制数
  • %m-月份,以零填充的十进制数字表示
  • %d-月份中的第几天,以零填充的十进制数表示
nhaq1z21

nhaq1z212#

在这种情况下,使用django的dateparse可能会很方便。

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

s1ag04yj3#

如果给定日期不是%Y-%m-%d,则django.utils.dateparse.parse_date函数将返回None
我没有在django源代码中找到一个函数来解析DATE_INPUT_FORMATS的字符串,所以我写了一个自定义的帮助函数,我在这里添加了帮助其他人。

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
cnh2zyt3

cnh2zyt34#

在这种情况下,使用Django的dateparse的parse_datetime可能会很方便。如果数据时间格式是动态的,则不必显式应用。

from django.utils.dateparse import parse_datetime
date = parse_datetime(datetime_str)

相关问题