我想在Django模板中显示访问者本地时区的日期时间,日期时间存储在数据库中的UTC格式。为此,我在不同的文件中进行了以下更改。
settings.py
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
页面.html
{% load tz %}
<div>
{{ start_time | localtime }}
</div>
and
<div>
{% localtime on %}
{{ start_time }}
{% endlocaltime %}
</div>
因为这个start_time
只以字符串格式存储'HH:MM'。但是我也尝试过使用date time对象。但对我还是不起作用。
还有一个问题,当我使用datetime.utcnow()
和datetime.now()
时,都在views.py中给出了'UTC'日期时间。
或者建议我,如果有其他方法可以得到同样的?
有没有人可以帮我解决这个问题?任何帮助都将不胜感激。
谢谢你。
3条答案
按热度按时间zpjtge221#
使用django timezone module:
xuo3flqw2#
我已经尝试了多种方法,但我仍然无法在django中实现这一点,尽管在js中实现起来很简单。所以我使用Django自定义标签来实现它。
custom_filters.py
file.html(我的模板文件)
“sub.expiryDate”是时间变量。也可以编辑“d.toLocaleString();”来自定义格式。如果你想要我的目录结构:
另外,不要忘记重新启动dev服务器。
fnx2tebb3#
如果你使用的是Django的自动时间戳,比如
auto_now_add=True
或auto_now=True
,Django会自动将时间戳转换为UTC时间。因此,在将时间戳转换为本地时间之前,需要先将其转换为UTC时间。您可以使用timezone.make_aware()
将时间戳转换为UTC时间