在Python中获取系统的时区信息?

我想从Python获取我系统的默认时区(PST)。 什么是最好的方式来做到这一点? 我想避免另外一个进程。

查看Python 时间模块。

from time import gmtime, strftime print strftime("%z", gmtime()) 

太平洋标准时间

这应该工作:

 import time time.tzname 

它返回两个string的元组:第一个是本地非DST时区的名称,第二个是本地DST时区的名称。

给出了ThomasH答案中的UTC偏移量,但考虑到夏令时。

 >>> import time >>> offset = time.timezone if (time.localtime().tm_isdst == 0) else time.altzone >>> offset / 60 / 60 * -1 -9 

time.timezonetime.altzone的值是以UTC为单位的秒数(UTC以东的区域为负值)。 这与我们如何喜欢它是相反的,因此* -1。

time.localtime().tm_isdst如果夏令时目前不生效, time.localtime().tm_isdst将为零(尽pipe如果一个地区最近改变了夏令时法则,这可能是不正确的)。

编辑:marr75是正确的,我已经编辑相应的答案。

用于计算偏移量的代码片段不正确,请参阅http://bugs.python.org/issue7229

处理这个问题的正确方法是:

 def local_time_offset(t=None): """Return offset of local zone from GMT, either at present or at time t.""" # python2.3 localtime() can't take None if t is None: t = time.time() if time.localtime(t).tm_isdst and time.daylight: return -time.altzone else: return -time.timezone 

这很可能不是OP要求的确切问题,但页面上有两个不正确的片段,并且时间错误吸引追踪并修复。

如果你喜欢UTC偏移string:

 time.timezone / -(60*60)