将欧洲字符串日期解析为Django DateField

时间:2015-08-20 12:20:34

标签: django date parsing

我在我的应用设置中使用USE_L10N = True。据我所知,这个设置让Django根据用户当前的语言环境调整日期格式。

因此,在管理员中,我的包含DateField的模型在格式为“%d /%m /%Y”的表单中正确表示。

我遇到的问题是我想从代码中创建一个新对象。我有一个CSVParse自定义函数解析CSV文件和创建对象。 CSV中的一列具有与上述相同的格式(例如“2015年12月17日”)。我试图用下面的行解析日期,但它返回“无”。在date_parse的文档中,我可以看到它表示格式错误。

from django.utils import dateparse

date_csv = "18/12/2014"
date = dateparse.parse_date(date_csv)

我错过了什么? 感谢

2 个答案:

答案 0 :(得分:1)

Django dateparse使用date_re(正则表达式)parse_datedate_re格式为year-month-day

date_re = re.compile(
    r'(?P<year>\d{4})-(?P<month>\d{1,2})-(?P<day>\d{1,2})$'
)

您提供的输入格式为day/month/year,因此您获得了None

答案 1 :(得分:1)

查看strptime

import time

date_csv = "18/12/2014"
date = time.strptime(date_csv, "%d/%m/%Y")