3 回答
TA贡献1866条经验 获得超5个赞
问题不在于Django设置,而在于传递给模型的日期。时区感知对象如下所示:
>>> from django.utils import timezone
>>> import pytz
>>> timezone.now()
datetime.datetime(2013, 11, 20, 20, 8, 7, 127325, tzinfo=pytz.UTC)
这是一个幼稚的对象:
>>> from datetime import datetime
>>> datetime.now()
datetime.datetime(2013, 11, 20, 20, 9, 26, 423063)
因此,如果您将电子邮件日期传递到任何地方(并且最终到达某种模型),请使用Django的now()。如果不是,则可能是现有软件包获取没有时区的日期的问题,您可以修补该软件包,忽略警告或将USE_TZ设置为False。
TA贡献1829条经验 获得超7个赞
使用django.utils.timezone.make_aware函数可让您的朴素日期时间对象意识到时区并避免这些警告。
它将天真的datetime对象(不带时区信息)转换为具有时区信息的对象(如果未将其明确指定为第二个参数,则使用django设置中指定的时区):
import datetime
from django.conf import settings
from django.utils.timezone import make_aware
naive_datetime = datetime.datetime.now()
naive_datetime.tzinfo # None
settings.TIME_ZONE # 'UTC'
aware_datetime = make_aware(naive_datetime)
aware_datetime.tzinfo # <UTC>
- 3 回答
- 0 关注
- 1243 浏览
添加回答
举报