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