【问题标题】:Python Filtering Out Events that are Outside of Date Range (Past Hour)Python过滤掉日期范围之外的事件(过去一小时)
【发布时间】:2019-11-17 02:17:02
【问题描述】:

我正在尝试仅在过去一小时内发生的预定“potential_individual_meetings”,然后向参与会议的用户发送推送通知。

推送通知发送正常,但似乎它们并非一直发送。在我看来,通知仅在 NOW 时间正好是会议安排后 1 小时发送。

我尝试执行以下操作,但似乎无法将 用于 Filter()。 现在 > ONE_HOUR & 现在

这将取代 datetime__gte=INDIVIDUAL_RANGE_START, datetime__lt=INDIVIDUAL_RANGE_END

我正在为非营利组织维护别人的代码,但 Python 对我来说不是一门强大的语言。非常感谢有人可以在这里给我的任何帮助。

NOW = timezone.now()
FIVE_MINUTES_AGO = NOW - timedelta(minutes=5)
ONE_HOUR = timedelta(hours=1)
NINETY_MINUTES = timedelta(minutes=90)

INDIVIDUAL_RANGE_START = FIVE_MINUTES_AGO - ONE_HOUR
INDIVIDUAL_RANGE_END = NOW - ONE_HOUR

    potential_individual_meetings = Event.objects.filter(
        status=1,
        datetime__gte=INDIVIDUAL_RANGE_START,
        datetime__lt=INDIVIDUAL_RANGE_END
    )
    individual_meetings = [e for e in potential_individual_meetings if not e.meeting.group]

【问题讨论】:

    标签: python date filter range


    【解决方案1】:

    这似乎为您提供了 1 小时 5 分钟前到 1 小时前的范围:

    INDIVIDUAL_RANGE_START = FIVE_MINUTES_AGO - ONE_HOUR
    INDIVIDUAL_RANGE_END = NOW - ONE_HOUR
    

    你想要的可能接近:

    INDIVIDUAL_RANGE_START = NOW - ONE_HOUR
    INDIVIDUAL_RANGE_END = FIVE_MINUTES_AGO
    

    或者可能只是INDIVIDUAL_RANGE_END = NOW,但我想你有五分钟的缓冲是有原因的。

    【讨论】:

      【解决方案2】:

      您的时间范围只有五分钟,但听起来您希望它是一小时,或者可能是 65 分钟。

      为什么不简单地改变这个:

      INDIVIDUAL_RANGE_END = NOW - ONE_HOUR
      

      到这里:

      INDIVIDUAL_RANGE_END = NOW
      

      无论如何,打印 RANGE_START 和 RANGE_END 变量以及 NOW 可能会告诉您出了什么问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-24
        • 1970-01-01
        • 1970-01-01
        • 2015-05-12
        相关资源
        最近更新 更多