【发布时间】:2012-03-16 13:08:07
【问题描述】:
我需要找出两个日期范围之间的天数。我遇到的问题是,当我传递表单时,我正在提取日期,并且它们以 unicode 对象的形式返回,因此(如下)不起作用。
start = data.get('start_date')
mat = data.get('maturity_date')
delta = start - mat
term_string += "%s" % (delta,)
当我尝试打印语句时,日期输出为March 01, 2012,因为我表单上的小部件将其转换为该格式。我想知道是否有办法获取这些 unicode 字符串并将它们转换回日期格式,以便我可以使用 delta 来获取天数。
编辑 我通过 print_form() 传递信息,它将表单中的数据发送到我的函数,该函数允许我用信息填充 pdf。
来自 lib/tools.py 的 print_form
def print_form(client=None, data=None, investment_form=None, type="gic_application", plan=None, investment=None):
...
if data:
term_string = ''
total_days = 0
if investment:
if investment.term_years:
term_string += "%s" % (investment.term_years,)
fdf += fdf_val_str("term_years", investment.term_years)
fdf += fdf_val_str("Term", "Years")
if investment.term_months:
start = data.get('start_date')
mat = data.get('maturity_date')
delta = start - mat
term_string += "%s" % (delta,)
fdf += fdf_val_str("Term", "Days")
if investment.term_days:
total_days += investment.term_days
term_string += "%s" % (total_days,)
fdf += fdf_val_str("Term", "Days")
...
response = HttpResponse(fdf.encode("ISO-8859-1"), mimetype='application/pdf')
response['Content-Disposition'] = 'attachment; filename=form.xfdf'#% download_filename# % (statement_date, "statements")
return response
这些是我的 forms.py 中的日期字段
start_date = forms.DateField(widget=DateInput, required=False)
maturity_date = forms.DateField(widget=DateInput, required=False)
【问题讨论】:
-
您使用的是哪个小部件?请向我们展示您的表格。如果你从
form.cleaned_data获取start和mat,并且它们是日期字段,那么你应该得到日期对象。 -
@Alasdair 我正在从 data.keys 获取 start 和 mat 并使用它来填充我的 pdf。我已编辑问题,希望对您有所帮助。
-
感谢更新。
data是什么?只是request.POST吗?如果你使用form.cleaned_data,你应该得到date对象。
标签: python django datetime django-views