我不知道这个问题重复了一遍,但不幸的是,我找不到任何答案。
我的印象是,只要我有,Django就已经负责将服务器时间转换为本地用户
TIME_ZONE = 'UTC'
USE_TZ = True
在我的设置中。
更重要的是,如果数据库是postgresql,那么设置也不重要,所有东西都会被转换。
然而,我尝试了以下所有方法:
{% load tz %}
{{ obj.date }}
{{ obj.date|localtime }}
{{ obj.date | timezone:"Canada/Mountain" }}
只有最后一个有效,其余的给我UTC时间。最后一个也没有用处,因为时间只对该区域的用户正确。
我在想我是否遗漏了什么。
我有一个非常简单的测试模型:
class TimeObject(models.Model):
date = models.DateTimeField(auto_now=True)
我的印象是Django已经负责将服务器时间转换为本地
很遗憾,这是不正确的。
正如这里所讨论的,没有自动知道用户时区的方法。你需要用其他方式来弄清楚(例如,它可以保存为用户设置(。然后你需要activate()
那个时区。一旦完成,Django将执行转换。