按时区感知日期过滤对象

时间:2019-08-16 08:18:48

标签: django python-3.x

假设我在设置中将TIME_ZONE变量设置为“欧洲/布拉格”,并且将USE_TZ设置为True。我还在示例中存储了一些数据:

   id  timestamp
   1   2012-07-27T00:00:00+02:00
   2   2018-03-11T02:00:00+01:00
   3   2013-11-04T14:08:40+01:00

这是我要实现的目标:

  1. 从这些数据中提取所有日期

  2. 按日期过滤这些数据并对其执行一些其他操作

对于提取日期,我使用Example.dates('timestamp', 'day')Example.annotate(date=TruncDay('timestamp')).values('date')

现在是区别:上面示例中的第一个对象(带有timestamp=2012-07-27T00:00:00+02:00),第一种方法返回的日期是2012-07-27,而第二种方法返回的日期是2012-07-26

我希望过滤器能够识别时区,因此我目前坚持使用第一个。

对于过滤,我使用的是Example.filter(timestamp__date=date)。而且有一个问题-似乎__date可以按转换为UTC的日期进行过滤。对于日期2012-07-27,它返回空的QuerySet;对于日期2012-07-26,它返回第一个对象。

是否可以通过时区感知日期进行过滤?

0 个答案:

没有答案