我试图根据给定的日期获取两个日期,昨天和明天,然后将它们传递给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的规则中引发问题:

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


我喜欢dateutil模块,所以我很好奇为什么它不起作用。通过日期的示例:2014年2月26日。有任何想法吗?

最佳答案

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

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

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

关于python - python dateutil relativedelta值超出范围错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21993872/

10-09 21:07