我有一个营业时间需要比较,如果营业时间过了午夜,我会得到不完整的结果
我的模特
class Hours(models.Model):
dayofweek = models.ForeignKey('Dayofweek')
opentime = models.TimeField(blank=True, null=True)
closetime = models.TimeField(blank=True, null=True)
...
Run Code Online (Sandbox Code Playgroud)
如果我只需要显示时间,一切正常,例如:周六下午 5 点 - 凌晨 2 点
现在,当我试图查询的时间来检查业务连开,那些过去的午夜凌晨将返回False为exists():
我的查询
if Hours.objects.filter(
business__id=id,
dayofweek__pyday=dt,
opentime__lte=mytime,
closetime__gte=mytime).exists():
#do something
Run Code Online (Sandbox Code Playgroud)
有什么建议可以告诉 Django 凌晨 2 点是下午 5 点之后吗?
一天可以有多个时段,但无论如何,这一天都会在晚上 11:59 结束。如果这种情况持续到第二天,你就必须打破你的时间间隔。所以你的过滤器的逻辑会像这样......
# Spans over 2 days
if opentime > closetime:
Hours.objects.filter(
business_id=id,
dayofweek_pyday=dt,
opentime_tye=myOpenTime,
closetime_gte=11:59:99
).exists() ||
Hours.objects.filter(
business_id=id,
# Next date
dayofweek_pyday=dt + 1,
opentime_tye=00:00:00,
closetime_gte=myCloseTime
).exists()
# Spans over 1 day
else:
Hours.objects.filter(
business__id=id,
dayofweek__pyday=dt,
opentime__lte=myOpentime,
closetime__gte=myClosetime).exists()
Run Code Online (Sandbox Code Playgroud)
我不了解 django,所以这只是一些伪代码和我会使用的替代方法。
| 归档时间: |
|
| 查看次数: |
862 次 |
| 最近记录: |