Python Django-日期时间范围结束时间已排除
我做了一个表单,允许用户添加由日期时间范围组成的Python Django-日期时间范围结束时间已排除,python,django,datetime,Python,Django,Datetime,我做了一个表单,允许用户添加由日期时间范围组成的缺勤 我保留了时间选项,因此他们可以将例如2014-01-23设置为2014-01-24 但由于最终存储的值将是2014-01-23 00:00:00到2014-01-24 00:00:00,因此该范围实际上仅涵盖23号。最有可能的是,用户会希望我们考虑 2014-01-2500: 以这种方式存储这些日期时间是个好主意吗 如果未设置结束时间,是否应自动增加结束日期 更新 按照@MartijnPieters的建议,下面是我如何检查end\u ti
缺勤
我保留了时间选项,因此他们可以将例如2014-01-23
设置为2014-01-24
但由于最终存储的值将是2014-01-23 00:00:00
到2014-01-24 00:00:00
,因此该范围实际上仅涵盖23号。最有可能的是,用户会希望我们考虑<代码> 2014-01-2500:
以这种方式存储这些日期时间是个好主意吗
如果未设置结束时间,是否应自动增加结束日期
更新
按照@MartijnPieters的建议,下面是我如何检查end\u time
是否为空的
def clean_end_时间(self):
end\u dt=self.cleaned\u data.get('end\u time',None)
如果end_dt.time().min==end_dt.time():
return datetime.combine(end_dt,end_dt.time().max)
返回自清理的\u数据.get('end\u time',无)
唯一的小问题是,如果没有设置时间,用户不能故意选择00:00
作为结束时间将结束时间设置为23:59:59.999999
现在,您的日期时间范围从2014-01-23 00:00:00
到2014-01-24 23:59:59.999999
,比2014-01-25
早1微秒(不属于该范围)
您可以使用来提供此值:
end = datetime.datetime.combine(datetime.date(2014, 1, 24), datetime.time.max)
如果未设置时间,则将结束时间设置为23:59:59.999999
现在,您的日期时间范围从2014-01-23 00:00:00
到2014-01-24 23:59:59.999999
,比2014-01-25
早1微秒(不属于该范围)
您可以使用来提供此值:
end = datetime.datetime.combine(datetime.date(2014, 1, 24), datetime.time.max)
如果未设置时间,则将结束时间设置为23:59:59.999999
现在,您的日期时间范围从2014-01-23 00:00:00
到2014-01-24 23:59:59.999999
,比2014-01-25
早1微秒(不属于该范围)
您可以使用来提供此值:
end = datetime.datetime.combine(datetime.date(2014, 1, 24), datetime.time.max)
如果未设置时间,则将结束时间设置为23:59:59.999999
现在,您的日期时间范围从2014-01-23 00:00:00
到2014-01-24 23:59:59.999999
,比2014-01-25
早1微秒(不属于该范围)
您可以使用来提供此值:
end = datetime.datetime.combine(datetime.date(2014, 1, 24), datetime.time.max)
这样会更好。我试试看。你能告诉我如何检查时间是否没有设置吗?@PierredeLESPINAY:将值完全保留为空,而不是填充默认值,或者将默认时间设置为23:59
。问题是我收到的日期时间已经转换为clean\u end\u time()
因此它被设置为2014-01-25 00:00:00
@PierredeLESPINAY:然后你必须实现你自己的干净钩子。:-)这样会更好。我试试看。你能告诉我如何检查时间是否没有设置吗?@PierredeLESPINAY:将值完全保留为空,而不是填充默认值,或者将默认时间设置为23:59
。问题是我收到的日期时间已经转换为clean\u end\u time()
因此它被设置为2014-01-25 00:00:00
@PierredeLESPINAY:然后你必须实现你自己的干净钩子。:-)这样会更好。我试试看。你能告诉我如何检查时间是否没有设置吗?@PierredeLESPINAY:将值完全保留为空,而不是填充默认值,或者将默认时间设置为23:59
。问题是我收到的日期时间已经转换为clean\u end\u time()
因此它被设置为2014-01-25 00:00:00
@PierredeLESPINAY:然后你必须实现你自己的干净钩子。:-)这样会更好。我试试看。你能告诉我如何检查时间是否没有设置吗?@PierredeLESPINAY:将值完全保留为空,而不是填充默认值,或者将默认时间设置为23:59
。问题是我收到的日期时间已经转换为clean\u end\u time()
因此它被设置为2014-01-25 00:00:00
@PierredeLESPINAY:然后你必须实现你自己的干净钩子。:-)