根据用户的时区显示时间的最佳方式是什么?
我有一个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文件上做一些逻辑吗?
答案 0 :(得分:2)
这取决于django版本和用户时区。如果您将用户时区存储在用户的个人资料中或其他位置,则可以使用timezone
模板标记:
{% timezone "Europe/Paris" %}
Paris time: {{ value }}
{% endtimezone %}
或者您可以使用timezone过滤器:
{{ value|timezone:"Europe/Paris" }}
否则你必须找出用户的时区是什么(通过她的ip我认为)。因此,您可以使用fasouto here提供的解决方案(但它不可靠,因为它返回该国家的第一个时区,并且有些国家/地区有多个时区)。
PS:我认为最好的办法是询问用户的时区并存储,以确保为她提供正确的日期/时间显示。