假设我在设置中将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
这是我要实现的目标:
从这些数据中提取所有日期
按日期过滤这些数据并对其执行一些其他操作
对于提取日期,我使用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
,它返回第一个对象。
是否可以通过时区感知日期进行过滤?