如何获取与当前时区对应的tz_info对象?

ran*_*guy 25 python time timezone datetime pytz

python(或pytz)中是否存在跨平台功能,它返回tzinfo与当前在计算机上设置的时区对应的对象?

环境变量不能指望,因为它们不是跨平台的

Ale*_*lli 11

>>> import datetime
>>> today = datetime.datetime.now()
>>> insummer = datetime.datetime(2009,8,15,10,0,0)
>>> from pytz import reference
>>> localtime = reference.LocalTimezone()
>>> localtime.tzname(today)
'PST'
>>> localtime.tzname(insummer)
'PDT'
>>> 
Run Code Online (Sandbox Code Playgroud)

  • [`pytz` docs说`pytz.reference`](http://pytz.sourceforge.net/#problems-with-localtime)应该仅用于测试*. (6认同)
  • @rob:**错了**.不要使用`LocalTimezone()`.`pytz`提供*历史*时区数据,而`time.timezone`,`time.altzone`(由`LocalTimezone()`使用)是常量,即,它们最多反映*最近的*时区定义.当地时区在过去/未来可能有不同的utc抵消,例如,在2010-2015尝试欧洲/莫斯科时区,看看会发生什么. (5认同)

jfs*_*jfs 8

tzlocal返回pytz时区的模块适用于*nix和win32:

from datetime import datetime
from tzlocal import get_localzone # $ pip install tzlocal

# get local timezone    
local_tz = get_localzone() 


print local_tz.localize(datetime(2012, 1, 15))
# -> 2012-01-15 00:00:00+04:00 # current utc offset
print local_tz.localize(datetime(2000, 1, 15))
# -> 2000-01-15 00:00:00+03:00 # past utc offset (note: +03 instead of +04)
print local_tz.localize(datetime(2000, 6, 15))
# -> 2000-06-15 00:00:00+04:00 # changes to utc offset due to DST
Run Code Online (Sandbox Code Playgroud)

注意:它考虑了DST和非DST utc偏移量变化.


use*_*062 6

蟒蛇 3.7:

import datetime

datetime.datetime.now().astimezone().tzinfo
Run Code Online (Sandbox Code Playgroud)


Sil*_*ost 5

time.timezone返回当前时区偏移量。datetime.tzinfo如果您需要更复杂的结构,还有一个。

  • `datetime.datetime.now() + datetime.timedelta(seconds=time.timezone)` 很好地做到了这一点。 (3认同)
  • @Baczek:“time.timezone”不考虑 DST。 (2认同)