我正在尝试自动获取本地时区偏移量,但遇到了麻烦。我试过了:
print time.timezone/3600
这会得到(当前错误的)偏移量,因为它不会自动调整夏令时和非夏令时。
我也尝试过:
now_utc = pytz.utc.localize(datetime.datetime.now())
now_mst = now_utc.astimezone(pytz.timezone('US/Mountain'))
这会获得正确的偏移值,但我想自动设置“美国/山”部分,这样我就不必手动输入任何内容来获取偏移量。
有没有办法获得根据 DST 和非 DST 自动调整的正确偏移量?
我将在不同地理位置的多个服务器上运行此脚本,如果可以的话,我希望自动获取 tz 偏移量。
您可以使用dateutil http://labix.org/python-dateutil/用于此的模块。要立即获取当地时区:
>>> import dateutil.tz
>>> import datetime
>>> localtz = dateutil.tz.tzlocal()
>>> localtz.tzname(datetime.datetime.now(localtz))
'EDT'
我目前处于东部夏令时间。夏令时切换回来后,您可以看到它将来会变回 EST:
>>> localtz.tzname(datetime.datetime.now(localtz) +
datetime.timedelta(weeks=20))
'EST'
如果您想要相对于 UTC 的偏移量,可以使用 utcoffset 函数。它返回一个时间增量:
>>> localtz.utcoffset(datetime.datetime.now(localtz))
datetime.timedelta(-1, 72000)
在本例中,由于我是 UTC-4,因此它返回 -1 天 + 20 小时。如果您需要的话,您可以将其转换为小时:
>>> localoffset = localtz.utcoffset(datetime.datetime.now(localtz))
>>> localoffset.total_seconds() / 3600
-4.0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)