Python Django';s显示的日期时间不';t根据用户';s本地时区
models.py 来自django.db导入模型的Python Django';s显示的日期时间不';t根据用户';s本地时区,python,django,django-models,Python,Django,Django Models,models.py 来自django.db导入模型的 #在这里创建您的模型。 课程主题(models.Model): “”“用户正在学习的主题。”“” text=models.CharField(最大长度=200) date\u added=models.DateTimeField(auto\u now\u add=True) 定义(自我): “”“返回模型的字符串表示形式。”“” 返回self.text 类条目(models.Model): “”“有关某个主题的特定知识。”“” topic=m
#在这里创建您的模型。
课程主题(models.Model):
“”“用户正在学习的主题。”“”
text=models.CharField(最大长度=200)
date\u added=models.DateTimeField(auto\u now\u add=True)
定义(自我):
“”“返回模型的字符串表示形式。”“”
返回self.text
类条目(models.Model):
“”“有关某个主题的特定知识。”“”
topic=models.ForeignKey(topic,on_delete=models.CASCADE)
text=models.TextField()
date\u added=models.DateTimeField(auto\u now\u add=True)
类元:
详细名称复数='entries'
定义(自我):
“”“返回模型的字符串表示形式。”“”
如果len(self.text)>50:
返回f“{self.text[:50]}…”
其他:
返回self.text
模板值
{{entry.date|date:'md,yg:i'}}
在模板中,如果我显示date_added变量,则时间似乎比我的计算机时间晚了8小时。我试图更改设置中的时区,但遇到值错误:时区设置不正确
编辑:USE_TZ
设置为true
在下面的模板代码中,localtime
on不影响日期,奇怪的是只显示服务器时间
{% load tz %}
{% timezone "Europe/Paris" %}
<p>Paris time: {{ entry.date_added|date:'M d, Y g:i' }}</p>
{% endtimezone %}
{% timezone None %}
<p>Server time: {{ entry.date_added|date:'M d, Y g:i' }}</p>
{% endtimezone %}
{% localtime on %}
<p>Local Time: {{ entry.date_added|localtime }}</p>
{% endlocaltime %}
{%load tz%}
{%时区“欧洲/巴黎”%}
巴黎时间:{entry.date|date:'md,yg:i'}
{%endtimezone%}
{%时区无%}
服务器时间:{{entry.date_added}日期:'md,yg:i'}
{%endtimezone%}
{%localtime on%}
本地时间:{entry.date_added | localtime}
{%endlocaltime%}
将“设置”中的时区变量设置为与上表中3个字母的时区代码关联的字符串是有效的
e、 g时区='国家/城市名称'
编辑:将服务器时间设置为UTC,然后向用户提供使用Javascript转换的本地时间,这可能是最好的方法。在您的settings.py文件中,您的默认时区设置为
TIME_ZONE = 'UTC'
您将希望保持原样,这样您就不会遇到DST问题。从数据库中获取对象后,将由您转换为本地时区。为了获取本地时区,您可以直接询问用户,并使用类似的方式将时区保存到他们的配置文件中
请参见中的示例
如果您不关心为所有用户显示正确的时区,而只是想为自己快速更改时区,则可以在模板中设置时区
{% load tz %}
{% timezone "Europe/Paris" %}
Paris time: {{ value }}
{% endtimezone %}
{% timezone None %}
Server time: {{ value }}
{% endtimezone %}
在settings.py文件中,您的时区显示了什么?由于夏令时问题,您不会希望以这种方式处理它。更多信息,请参见。相反,我应该在一个模板中转换它,例如{value | timezone:“Country/City_Name”}
?如果它只适合您,那么就可以了。如果您计划为每个用户更新它,您将需要更健壮的东西。使用本地时间({%localtime on%}
)仍然会奇怪地显示服务器时间。。。