给定今天的日期范围以过滤 Django 中的条目:
today_min = datetime.datetime.combine(timezone.now(), datetime.time.min)
today_max = datetime.datetime.combine(timezone.now(), datetime.time.max)
today_events = Entry.objects.filter(due_date_time__range=(today_min, today_max))
我显然使用 timezone.now() 而不是 datetime.date.today(),以考虑时区支持,但我仍然收到错误消息:
RuntimeWarning: DateTimeField received a naive datetime (2013-01-13 00:00:00) while time zone support is active.
RuntimeWarning: DateTimeField received a naive datetime (2013-01-13 23:59:59.999999) while time zone support is active.
我忽略了什么?谢谢
请您参考如下方法:
根据 Python 3.2 中 datetime 模块的来源,datetime.datetime.combine 的结果构造如下:
@classmethod
def combine(cls, date, time):
...
return cls(date.year, date.month, date.day,
time.hour, time.minute, time.second, time.microsecond,
time.tzinfo)
所以 tzinfo 在这里不被尊重,你使用 combine 函数的方式(如果 Python 2.X 版本的 datetime 像 3.2 版本那样做)。
要获取本地化的日期时间对象,Django docs推荐这个:
from django.utils import timezone
timezone.localtime(timezone.now())
