首页 > 解决方案 > 即使 USE_TZ = True,Django 时区也会给出错误的结果

问题描述

我有一个这样的模型:

class Entry(models.Model):
    topic = models.ForeignKey(Topic, on_delete=models.CASCADE)
    text = models.TextField()   
    date_added = models.DateTimeField(default=timezone.now())

模板中显示的 date_added:

{% localtime on %}
  {{ entry.date_added|date:'d M, Y H:i'}}  
{% endlocaltime %}

正如https://docs.djangoproject.com/en/3.0/topics/i18n/timezones中所建议的那样。

在我的 setting.py 中,我的USE_TZ = True

但是,输出datetime.datetime(2020, 8, 22, 9, 20, 16, 439533, tzinfo=<UTC>) 在我的网页中给了我或 2020 年 8 月 22 日 9:20

为什么输出是UTC?据我了解,知道日期时间意味着它遵循用户的时区。我的时区是 UTC+7,所以必须是 2020 年 8 月 22 日 16:20。

我已经阅读了 Django 中的 Retrieve timezone 感知 DateTimeField ,它建议更改TIME_ZONE = 但不会让它不知道吗?

我能做些什么来修复它?我希望日期时间遵循用户的时区

谢谢

标签: pythondjangodatetime

解决方案


在 settings.py 文件中,请设置以下内容。

TIME_ZONE = 'America/Los_Angeles'
USE_TZ = False

推荐阅读