gpt4 book ai didi

python - 与 Django 比较日期范围

转载 作者:行者123 更新时间:2023-12-01 04:45:10 25 4
gpt4 key购买 nike

我的表有两列,用于存储特定交易开始和结束的日期。这些列的值是整数,并遵循 Python 使用的日期时间库的相同模式。

我的逻辑目前适用于不环绕一周的日期范围,即。周一至周五、周四至周六、周二至周四等。我不知道如何捕获下周的交易,例如周五至周一、周六至周二等。这是我使用 Django 的声明:

Deal.objects.filter(Q(deal_day_start__lte=current_day) & Q(deal_day_end__gte=current_day))

显然,这给我带来了周五到周一范围的问题,因为例如当天可能是周日,日期时间为 0,而周五的交易开始日为 5。

有没有一种简单的方法可以使用 Django 解决这个问题?如果我使用 Python if else 语句,我显然可以创建多个分支并捕获此场景,但我不确定如何使用 Django 来实现此目的。

最佳答案

鉴于所使用的模式,我建议:

Deal.objects.filter(
Q(deal_day_start__lte=current_day, deal_day_end__gte=current_day) |
Q(deal_day_start__lte=current_day, deal_day_end__lt=F("deal_day_start")) |
Q(deal_day_start__gte=current_day, deal_day_end__gte=current_day, deal_day_end__lt=F("deal_day_start"))
)

让我们观察一下,对于一笔交易来说,结束日必须小于开始日。当天有 3 个案例属于交易期:

  • 如果当前日期介于开始日和结束日之间。
  • 如果当前日期大于开始日但大于结束日,则表示交易必须结束。
  • 如果当前日期小于开始日期,则交易必须结束。但不仅要结束,还要在当天之后结束。

关于python - 与 Django 比较日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29612350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com