python dateutil relativedelta值超出范围错误

python dateutil relativedelta值超出范围错误,python,django,Python,Django,我试图根据给定的日期获取两个日期,昨天和明天,然后将其传递给Django的Queryset过滤器函数: nxtday = relativedelta(day=+1) + date yesterday = relativedelta(day=-1) + date events = events.filter(start_datetime__gte=yesterday, end_datetime__lte=nxtday) 这里的重点是获取当天的事件,正如您可能已经推断的那样。问题是我不断地遇到这个

我试图根据给定的日期获取两个日期,昨天和明天,然后将其传递给Django的Queryset过滤器函数:

nxtday = relativedelta(day=+1) + date
yesterday = relativedelta(day=-1) + date
events = events.filter(start_datetime__gte=yesterday, end_datetime__lte=nxtday)
这里的重点是获取当天的事件,正如您可能已经推断的那样。问题是我不断地遇到这个错误:

ValueError: day is out of range for month
切换到timedelta对象后,dateutil的rrule会出现问题:

TypeError: can't compare offset-naive and offset-aware datetimes

我喜欢dateutil模块,所以我只是好奇它为什么不工作。通过的示例日期:2014-02-26。有什么想法吗?

对day参数传递-1表示请求当月的-1天,这就是为什么它抱怨值超出范围

对于相对增量,day参数表示绝对日期,days参数表示相对日期


日期是什么类型的对象?date是python datetime.date,它是naive,这就是后来rrule出现的问题,当我切换到使用timedelta对象时,rrule似乎希望时区感知实例
relativedelta
不支持将日期放在
+
的右侧,使用
date+relativedelta(day=+1)
。在这两种情况下,您可能都会遇到第二个错误,因为这才是您真正的问题。
nxtday = relativedelta(days=1) + date
yesterday = relativedelta(days=-1) + date