【问题标题】:Flask + Jinja: Convert UTC to Local TimezoneFlask + Jinja:将 UTC 转换为本地时区
【发布时间】:2014-08-18 01:52:17
【问题描述】:
我有一个 Flask 应用程序,它将用户的时区(来自 pytz.common_timezones)存储在数据库中。
我使用 UTC 时间戳将记录存储在数据库中。
我想根据他们的时区向最终用户显示这些记录。
最好:
-
遍历每条记录并转换时区,然后将其传递给render_template?
--或--
在我的视图中定义一个宏以在模板本身内执行此转换?
是否有将原始时区转换为本地时区的最佳实践?
【问题讨论】:
标签:
python
flask
timezone
jinja2
pytz
【解决方案1】:
恕我直言,第二个选项更好,因为服务器代码不必知道每个客户端的时区信息。此外,像 Flask-Moment 这样的烧瓶扩展使这更容易完成。
【解决方案2】:
我认为您在这里有两个不同的问题。真正的问题是关于如何最好地操作您的模板 - 可以询问任何值操作。我会让其他人回答这个问题。
关于第二个问题:
是否有将原始时区转换为本地时区的最佳做法?
这没有多大意义。 python 意义上的“naive”意味着“不知道时区”——所以实际上并不存在“naive timezone”这样的东西。
如果您的意思是从幼稚的datetime 转换为有意识的datetime,那么最好的建议是确保使用localize 函数,如the pytz documentation 中所述。不要尝试自己将其分配给tzinfo 属性。