zhang-can

数据库中的时间类型是这样的:

 

datetime模块拿到的时间类型是这样的:

 

>>> datetime.datetime.now()
datetime.datetime(2017, 11, 29, 19, 58, 7, 229743)

 

要比较需要处理一下格式

def clean_start_time(self):
        # 注意,datetime对象在比较时,一定要去掉时区信息,否则报错
        start = self.cleaned_data.get(\'start_time\').replace(tzinfo=None)
        now = datetime.now().replace(tzinfo=None)
        diff = int((start - now).total_seconds())  # -1793 days, 11:34:26.183204 timedelta对象
        # print(diff, type(diff))
        if not diff > 0:
            raise ValidationError(\'预约时间不能早于当前时间!\')
        return self.cleaned_data.get(\'start_time\')

    def clean(self):
        # 如果上一步验证错了,没有返回值,这里就取不到start
        start = self.cleaned_data.get(\'start_time\')
        if start:
            start = start.replace(tzinfo=None)
            end = self.cleaned_data.get(\'end_time\').replace(tzinfo=None)
            diff = int((end - start).total_seconds()) / 60
            if diff <= 0:
                raise ValidationError(\'结束时间不能早于开始时间!\')
            elif diff / 60 > 48:
                print(\'预约时间不得大于2天!\')
                raise ValidationError(\'预约时间不得大于2天!\')
            return self.cleaned_data

 

知识点:

  首先要把时区信息关掉,否则不能比较

  要把时间转换成秒单位,时间格式有个方法      .total_seconds()

  然后就可以比较了

分类:

技术点:

相关文章: