@
hao1032 抱歉关于 TIME_ZONE 这个理解错了。
整体重新说一下,虽然 1.8 版本的说明和 1.9 , 1.10 不一样,但是数据库存储的时间都是标准的 UTC 时间。(之前说的是存储的是基于 TIME_ZONE 的时间,这个是错误的)
我本地跑了下 1.8 , 1.9 ,分别设置 TIME_ZONE 为「 UTC 」和「 Asia/Shanghai 」,后台登陆,看数据库里面的时间,也确实是 UTC 时间,现在我电脑时间是, 2016 年 09 月 06 日 12:22:37 ,但是数据库中存储的都是凌晨 4 点的,正好-8 ;
至于你的为什么会出现 CONVERT_TZ ,是因为你开启了 USE_TIME 。
你用的 now.day 是 UTC 时间,而 Django 认为这个时间是 TIME_ZONE 时间;
所以生成 sql 时候,先把数据库中数据时间,转成 TIME_ZONE 时间,然后和你的 day 进行比较;
所以你应该使用
from django.conf import settings
from django.utils import timezone
import pytz
now = timezone.now()
tzinfo = pytz.timezone(settings.TIME_ZONE)
now = now.replace(tzinfo=tzinfo)
然后传入此时的 now.day ,获取到的应该就是正确的数据了