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 转换为本地时区的主要内容,如果未能解决你的问题,请参考以下文章

flask 模版- 时间 Flask-Moment

使用 Flask/Jinja2 将 HTML 传递给模板

在 Jinja2 模板中使用 DateTimeFields 显示本地时间 - Django

如何将 UTC 时间转换为本地时间

将 UTC 日期时间字符串转换为本地日期时间

将 UTC 纪元转换为本地日期