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 日期时间查询的主要内容,如果未能解决你的问题,请参考以下文章

使用 django 查询返回活动时区中的日期时间

用日期时间注释 Django 查询集

Django查询格式化日期时间输出

Django:查询时的天真日期时间

如何使用格式化的日期时间字段获取 django 查询集结果

Django 查询超过 5 小时的对象的日期时间