Python过滤掉超出日期范围(过去一小时)的事件

时间:2019-11-17 02:17:02

标签: python date filter range

我只尝试获取计划的“ 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]

2 个答案:

答案 0 :(得分:0)

这似乎为您提供了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,但我想您有一个五分钟的缓冲时间是有原因的。

答案 1 :(得分:0)

您的时间范围长度只有五分钟,但是听起来好像您希望是一小时,或者说是65分钟。

为什么不简单地改变它:

INDIVIDUAL_RANGE_END = NOW - ONE_HOUR

对此:

INDIVIDUAL_RANGE_END = NOW

无论如何,现在打印RANGE_START和RANGE_END变量,以及现在,都可能会向您显示问题所在。