我在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()
;它将返回一个可调整的时区感知日期时间。