Django的。显示正确的时间 - 取决于时区

时间:2014-07-21 20:47:28

标签: python django timezone

根据用户的时区显示时间的最佳方式是什么?

我有一个Post对象:

class Post(models.Model):
   submit_date = models.DateTimeField(auto_now_add=True)
   ...

在模板中,我有类似的东西:

{% load tz %}
<p> TIME: {{ post_object.submit_date|localtime }} </p>

在settings.py中:

USE_TZ = True
USE_L10N = True
TIME_ZONE = 'UTC'

可能我错过了一些显而易见的东西,我想要的是根据时区显示用户时间的模板。我应该在views.py文件上做一些逻辑吗?

1 个答案:

答案 0 :(得分:2)

这取决于django版本和用户时区。如果您将用户时区存储在用户的个人资料中或其他位置,则可以使用timezone模板标记:

{% timezone "Europe/Paris" %}
    Paris time: {{ value }}
{% endtimezone %}

或者您可以使用timezone过滤器:

{{ value|timezone:"Europe/Paris" }}

否则你必须找出用户的时区是什么(通过她的ip我认为)。因此,您可以使用fasouto here提供的解决方案(但它不可靠,因为它返回该国家的第一个时区,并且有些国家/地区有多个时区)。

PS:我认为最好的办法是询问用户的时区并存储,以确保为她提供正确的日期/时间显示。