数据库中的时间类型是这样的:
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()
然后就可以比较了