(我是 Python 和 Google App Engine 的新手,如果我的问题看起来很基础,请原谅我)。
我正忙着在我的 Google App Engine 应用程序中管理多个用户时区。
这是我的限制:
- 如果用户在输入中输入时间,它将是本地时间(包括 DST,在适当的时候)。
- 如果用户没有输入时间,系统必须为他们输入当地时间(包括 DST,在适当的时候)。
- 当向用户显示日期和时间时,它必须是他们的本地时间(包括 DST,在适当的时候)
我知道时间将在内部存储为带有 tzinfo 对象的 UTC,并且 App Engine 将使用 UTC 时间存储模型。
我以前认为我已经通过要求用户在他们的偏好中指定他们的时区来解决这一切。然后,我只需加载他们的首选项并将该 tzinfo 添加到引用该用户的任何日期时间对象中。
然而,我们最近的夏令时打破了它。事实证明,我没有在我的 tzinfo 对象中正确实现 dst() 。据我了解,我必须确定 DST 当前是否打开,如果是,则返回 tzinfo 的正确偏移量。
问题是,我不知道如何确定时区的夏令时是否是当前时间。我错过了一些明显的东西吗?