在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.timezone
或time.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)