如何在Django视图中显示本地时区的UTC时间



我在Django应用程序中使用UTC,我想显示本地时区的时间;'欧洲/斯德哥尔摩。我就是无法让这件简单的事情发挥作用,所以我一定做错了什么。我就是搞不清是什么…

这就是我的设置

TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True

这就是我如何获得传递到模板的日期:

my_time = datetime.datetime.utcnow()

最后,这是我的模板文件中的内容:

{% load tz ‰}
{% timezone 'Europe/Stockholm' %}{{ my_time|time }}{% endtimezone %}

但无论我在{%timezone…%}中使用什么时区,日期总是读成20:31,而当地时间实际上应该是22:31。

感谢您的帮助!

settings.py中将TIME_ZONE = 'UTC'更改为TIME_ZONE = 'Europe/Stockholm'

您还需要将utcnow((方法替换为now((

my_time = datetime.datetime.now()

使用本地时间的正常方式是设置TIME_ZONE或调用activate()

也就是说,如果你愿意,你可以使用timezone模板标记。问题出在utcnow()上。如文档中所述,它返回一个天真的日期时间,这意味着它不具有时区意识。使用Django的now();它将返回一个可调整的时区感知日期时间。

最新更新