Working with timezones

一般来说,处理时区可能会很棘手。您的Streamlit应用程序用户不一定与运行应用程序的服务器处于同一时区。对于公共应用程序来说尤其如此,世界上任何地方(任何时区)的任何人都可以访问您的应用程序。因此,了解Streamlit如何处理时区至关重要,这样您就可以在显示datetime信息时避免意外行为。

Streamlit 总是在前端显示与后端相应的 datetime 实例相同信息的 datetime 信息。也就是说,日期或时间信息不会自动适应用户的时区。我们区分以下两种情况:

当你提供一个datetime实例而不指定时区时,前端显示的datetime实例将不包含时区信息。例如(这也适用于其他小部件如st.dataframe):

import streamlit as st from datetime import datetime st.write(datetime(2020, 1, 10, 10, 30)) # Outputs: 2020-01-10 10:30:00

上述应用程序的用户总是看到输出为2020-01-10 10:30:00

当你提供一个datetime实例并指定一个时区时,前端会在同一时区显示datetime实例。例如(这也适用于其他小部件如st.dataframe):

import streamlit as st from datetime import datetime import pytz st.write(datetime(2020, 1, 10, 10, 30, tzinfo=pytz.timezone("EST"))) # Outputs: 2020-01-10 10:30:00-05:00

上述应用程序的用户总是看到输出为2020-01-10 10:30:00-05:00

在这两种情况下,日期和时间信息都不会在前端自动调整到用户的时区。用户看到的内容与后端相应的datetime实例完全相同。目前无法自动将日期或时间信息调整为查看应用程序的用户的时区。

push_pin

注意

旧版本的st.dataframe存在时区问题。我们不计划为旧版数据框架推出额外的修复或增强功能。如果您需要稳定的时区支持,请考虑通过更改config settingconfig.dataFrameSerialization = "arrow"来切换到箭头序列化。

forum

还有问题吗?

我们的 论坛 充满了有用的信息和Streamlit专家。