Python 如何自动获取本地时区的时区偏移?
我正在尝试自动获取本地时区偏移,但遇到了问题。我试过:Python 如何自动获取本地时区的时区偏移?,python,datetime,time,timezone,Python,Datetime,Time,Timezone,我正在尝试自动获取本地时区偏移,但遇到了问题。我试过: print time.timezone/3600 这会得到(当前错误的)偏移量,因为它不会自动调整夏令时和非DST 我也试过: now_utc = pytz.utc.localize(datetime.datetime.now()) now_mst = now_utc.astimezone(pytz.timezone('US/Mountain')) 这将获得正确的偏移值,但我希望自动设置“US/Mountain”部分,这样我就不必手动输
print time.timezone/3600
这会得到(当前错误的)偏移量,因为它不会自动调整夏令时和非DST
我也试过:
now_utc = pytz.utc.localize(datetime.datetime.now())
now_mst = now_utc.astimezone(pytz.timezone('US/Mountain'))
这将获得正确的偏移值,但我希望自动设置“US/Mountain”部分,这样我就不必手动输入任何内容来获得偏移
是否有一种方法可以获得正确的偏移量,该偏移量可以通过DST和非DST自动调整
我将在不同地理位置的多台服务器上运行此脚本,如果可以,我希望自动获取tz偏移量。您可以使用此模块来完成此操作。要立即获取本地时区,请执行以下操作:
>>> 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函数。它返回一个timedelta:
>>> 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
我需要本地时区偏移量,而不是时区偏移量,用如何获取偏移量更新
datetime.now()
可能不明确,即代码可能在DST转换期间返回错误的UTC偏移量,请使用。now(local_tz)
以明确获取时间。dateutil
如果由于与DST无关的原因,当前时区的UTC偏移量过去/将来不同,则过去/将来的日期可能会失败,例如,在2010-2015年期间尝试欧洲/莫斯科时区。使用可以返回正确UTC偏移量的pytz
时区。@J.F.Sebastian-updated另请参见:。相关: