python dateutil relativedelta值超出范围错误

时间:2014-02-24 16:51:29

标签: 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)

这里的重点是获取当天的事件,因为你已经推断过。问题是我一直收到这个错误:

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。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

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

对于相对增量,参数用于绝对日期,参数用于相对日期。 docs

nxtday = relativedelta(days=1) + date
yesterday = relativedelta(days=-1) + date