Python Django字符串到日期格式
我想将字符串日期转换为django日期格式。我尝试了一种方法。但没有起作用Python Django字符串到日期格式,python,django,datetime,Python,Django,Datetime,我想将字符串日期转换为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' 我的代码有什么问题。应该是%Y-%m-%d: >>> s = "2014-04-07" >>> date
date = datetime.datetime.strptime(request.POST.get('date'),"Y-mm-dd").date()
我犯了这个错误
time data '2014-04-07' does not match format 'Y-mm-dd'
我的代码有什么问题。应该是
%Y-%m-%d
:
>>> s = "2014-04-07"
>>> datetime.datetime.strptime(s, "%Y-%m-%d").date()
datetime.date(2014, 4, 7)
根据报告:
表示以世纪为小数点的年份%Y
-以零填充十进制数表示的月份%m
-以零填充十进制数表示的月份日期%d
希望能有所帮助。在这种情况下,使用django可能会很方便
from django.utils.dateparse import parse_date
date_str = request.POST.get('date')
date = parse_date(date_str)
from django.utils.dateparse import parse_datetime
date = parse_datetime(datetime_str)
django.utils.dateparse.parse_date
函数将返回None
如果给定日期不是%Y-%m-%d
格式
我在django源代码中还没有找到一个函数,可以通过DATE\u INPUT\u格式
解析字符串。所以我为它写了一个自定义的helper函数
我已经添加到这里来帮助其他人
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
在这种情况下,使用django的parse_datetime可能会很方便
from django.utils.dateparse import parse_date
date_str = request.POST.get('date')
date = parse_date(date_str)
from django.utils.dateparse import parse_datetime
date = parse_datetime(datetime_str)
parse_date
未按规定工作,如果日期未采用%Y-%m-%d
格式,则返回None
。如其他注释所述,parse_datetime
对我有效。太棒了!如果有几个不同的格式,答案是极好的!某些字符串可能被多种格式错误接受。04-07-2021或07-04-2021?@PedroLacerda是的,如果您的DATE\u INPUT\u格式
同时包含这两种格式,则会出现问题。我认为您不应该同时使用这两种格式。我有一个带有时区的字符串日期,这在转换时给了我一个错误:ValueError:未转换的数据仍然存在:T18:30:00.000Z
我如何转换这个字符串日期:2019-10-15T18:30:00.000Z
?@saran3h您可以使用django.utils.dateparse.parse_datetime进行转换。请在此处查看Melvyn的答案: