在Python中,如何找到计算机设置的UTC时间偏移量?
发布于 2010-07-03 02:55:53
import time
print -time.timezone
它以秒为单位打印协调世界时的偏移量(要考虑夏令时,请参阅time.altzone
is_dst = time.daylight and time.localtime().tm_isdst > 0
utc_offset = - (time.altzone if is_dst else time.timezone)
其中utc偏移量通过以下方式定义:“要获取本地时间,请将utc偏移量与utc时间相加。”
在Python 3.3+中,如果底层C库支持,就会有tm_gmtoff
attribute:
utc_offset = time.localtime().tm_gmtoff
注意:在some edge cases中,time.daylight
可能会给出错误的结果。
如果tm_gmtoff
在Python 3.3+上可用,datetime会自动使用它:
from datetime import datetime, timedelta, timezone
d = datetime.now(timezone.utc).astimezone()
utc_offset = d.utcoffset() // timedelta(seconds=1)
要以一种即使tm_gmtoff
不可用也能解决time.daylight
问题的方式来获取当前的协调时间偏移量,可以使用@jts's suggestion来构建本地和协调时间的子结构:
import time
from datetime import datetime
ts = time.time()
utc_offset = (datetime.fromtimestamp(ts) -
datetime.utcfromtimestamp(ts)).total_seconds()
要获取过去/未来日期的协调世界时偏差,可以使用pytz
时区:
from datetime import datetime
from tzlocal import get_localzone # $ pip install tzlocal
tz = get_localzone() # local timezone
d = datetime.now(tz) # or some other local date
utc_offset = d.utcoffset().total_seconds()
它在DST转换期间工作,它适用于过去/未来的日期,即使当地时区在当时具有不同的UTC偏移,例如,2010-2015年期间的欧洲/莫斯科时区。
发布于 2015-04-04 07:30:11
我喜欢:
>>> strftime('%z')
'-0700'
我首先尝试了JTS的答案,但它给了我错误的结果。我现在在-0700,但它说我在-0800。但我必须做一些转换,才能得到一些我可以减去的东西,所以可能答案是不完整的而不是不正确的。
发布于 2020-05-19 00:34:22
time module有一个时区偏移量,以“协调世界时以西的秒数”表示。
import time
time.timezone
https://stackoverflow.com/questions/3168096
复制相似问题