关于python:Django日期时间查询

Django Datetime Query

在Django中,以时区感知的方式查询今天(或过去给定天数的特定日期)创建的对象最有效的方法是什么?

我知道有很多关于这方面的问题,但大多数答案不包含时区意识,似乎没有任何确定的最新答案,而且大多数解决方案都会产生幼稚的日期时间警告:

RuntimeWarning: DateTimeField received a naive datetime (2012-10-23
00:00:00) while time zone support is active.

我正在运行带有时区支持的django 1.5,并在整个过程中使用pytz和UTC时区。


Django有一个内置函数,可以将naive datetime对象转换为支持时区的对象:

1
2
3
from django.utils import timezone

enlightened_date = timezone.make_aware(naive_date, timezone.utc)

另一个选择是

1
2
from django.utils.timezone import utc
utcnow = datetime.utcnow().replace(tzinfo=utc)