(我是Python和Google App Engine的新手,如果我的问题看起来很基本,请原谅我).
我正试图在我的Google App Engine应用程序中管理多个用户时区.
这是我的约束:
如果用户在输入上输入时间,则它将是本地时间(包括DST,适当时).
如果用户未输入时间,系统必须在当地时间为其输入(包括DST,适当时).
当日期和时间显示给用户时,它必须是当地时间(包括夏令时,适当时)
我知道时间将在内部存储为带有tzinfo对象的UTC,并且App Engine将使用UTC时间存储模型.
我以前认为通过要求用户在他们的偏好中指定他们的时区来解决这个问题.然后,我只是加载他们的首选项并将该tzinfo添加到任何引用该用户的日期时间对象.
但是,我们最近的夏令时打破了它.事实证明我没有在我的tzinfo对象中正确实现dst().据我了解,我必须确定DST当前是否打开,如果是,则返回tzinfo的正确偏移量.
问题是,我不知道如何确定时区的日光时间是否是最新的.我错过了一些明显的东西吗
如果可以的话,我建议你看一下这个python-dateutil
包,它包含为所有时区预先构建的tz对象,包括DST偏移信息.我不认为有一种方法可以"只知道"DST是否在没有支持数据的情况下...它是大多数时区的日期驱动(或者至少是支持DST的时区),并且日期因当地而异习俗,政治和各种事物.
http://labix.org/python-dateutil