Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django-日期时间范围结束时间已排除_Python_Django_Datetime - Fatal编程技术网

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:然后你必须实现你自己的干净钩子。:-)