Python中的时区处理

因为自己写的东西是跑在米国的原因,所以时区问题是必须要解决的。之前的Django应用比如这个blog对于时区的处理直接在settings.py里面设置TIME_ZONE就可以,但是web.py就需要自己去处理这个问题了。通过阅读Django的代码发现,设置时区只要利用time模块的tzset方法就可以(UNIX适用)。

首先设置settings.TIME_ZONE = "Asia/Shanghai" (time.tzset还接受一些别的格式,请查看文档)

import os
import time

def switch_time_zone():
    """
    切换时区到settings.TIME_ZONE
    """
    os.environ["TZ"] = settings.TIME_ZONE
    time.tzset()

这样时区就被设置成了中国的时区了,使用 datetime.datetime.now() 就可以看到变化了。

另外如果使用的是postgresql数据库的话,需要运行 SET TIME ZONE "Asia/Shanghai" 来设置数据库使用的时区。