我想将字符串日期转换为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'
我的代码中出了什么问题。
答案 0 :(得分:33)
应为%Y-%m-%d
:
>>> s = "2014-04-07"
>>> datetime.datetime.strptime(s, "%Y-%m-%d").date()
datetime.date(2014, 4, 7)
%Y
代表一年,世纪为十进制数%m
- 作为零填充十进制数字的月份%d
- 作为零填充十进制数的月中的某一天希望有所帮助。
答案 1 :(得分:18)
在这种情况下使用django的dateparse可能会很方便。
from django.utils.dateparse import parse_date
date_str = request.POST.get('date')
date = parse_date(date_str)
答案 2 :(得分:5)
django.utils.dateparse.parse_date
格式, None
函数将返回%Y-%m-%d
我没有在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
答案 3 :(得分:1)
在这种情况下,使用 Django 的 dateparse 的 parse_datetime 可能会很方便。如果是动态的,则您不必明确应用数据时间格式。
from django.utils.dateparse import parse_datetime
date = parse_datetime(datetime_str)