如何在 Django 中将 UTC 时间转换为用户的本地时间



我不知道这个问题重复了一遍,但不幸的是,我找不到任何答案。

我的印象是,只要我有,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将执行转换。

最新更新