如何将日期值转换为日期类型进行比较?

时间:2017-06-01 14:51:39

标签: django django-forms

我正在读取用户的日期值,需要在django中进行日期比较。我找不到任何答案如何做到这一点。我真正需要的是将字符串转换为日期,以便可以比较相等/小于/大于值。

我获得的表格价值如下。

start_date = form_new_task.cleaned_data['start_date']

我需要将start_date值与date.today()进行比较以获得相等/小于/大于。

任何人都可以让我知道这样做的确切方法。我没有从输入中读取任何时间部分,因为我将表单输入设置为date字段(不是datetime)。

更新为完整代码:

在表格声明中:

class Form_Task(forms.Form):
    start_date = forms.DateField(label='Check-In Date', initial='2017-05-05',
                                   widget=forms.DateInput(attrs={'class': 'form-control,'size': 10}))

在POST请求中:

form_new_task = Form_Task(request.POST)
    if form_new_task.is_valid():
        start_date = form_new_task.cleaned_data['start_date']

        if start_date < date.today()
            err_str = 'Start date cannot be a past date.' # here I don't get this assigned. It's evaluate to False.

2 个答案:

答案 0 :(得分:0)

我想出了这样做的方法,并认为这对其他人有帮助。我已经将start_date字段声明为DateField,当我读取它作为日期类型对象获取的值时(我认为是datetime)。所以我必须在这两天内得到delta(差异)。

<强>形式:

class Form_Task(forms.Form):
    start_date = forms.DateField() # declaration

在后请求处理程序方法中:

    form_new_task = Form_Task(request.POST)

    if form_new_task.is_valid():
      start_date = form_new_task.cleaned_data['start_date']
      delta = start_date - date.today()

      if delta.days < 0:
        err_str = 'Start date cannot be a past date.'
      elif delta.days == 0:
        ....
        ....

答案 1 :(得分:-1)

您可以比较这样的日期,

from datetime import datetime

if start_date < datetime.today().date():
    err_str = 'Start date cannot be a past date.'
相关问题