Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何自动获取本地时区的时区偏移?_Python_Datetime_Time_Timezone - Fatal编程技术网

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另请参见:。相关: