Django 日期时间查询

Posted

技术标签:

【中文标题】Django 日期时间查询【英文标题】:Django Datetime Query 【发布时间】:2012-10-14 23:08:33 【问题描述】:

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

我知道对此有很多问题,但大多数答案都没有包含时区意识,似乎没有任何明确的最新答案,并且大多数解决方案都会产生天真的日期时间警告:

RuntimeWarning:DateTimeField 收到一个天真的日期时间 (2012-10-23 00:00:00) 时区支持处于活动状态。

我正在运行支持时区的 Django 1.5,并且始终使用 pytz 和 UTC 时区。

【问题讨论】:

【参考方案1】:

另一种选择是

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

【讨论】:

【参考方案2】:

Django 有一个内置函数可以将天真的日期时间对象转换为时区感知对象:

from django.utils import timezone

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

【讨论】:

以上是关于Django 日期时间查询的主要内容,如果未能解决你的问题,请参考以下文章