首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Python中获取计算机的UTC偏移

在Python中获取计算机的UTC偏移
EN

Stack Overflow用户
提问于 2010-07-03 02:09:00
回答 8查看 52.6K关注 0票数 63

在Python中,如何找到计算机设置的UTC时间偏移量?

EN

回答 8

Stack Overflow用户

发布于 2010-07-03 02:55:53

time.timezone

代码语言:javascript
复制
import time

print -time.timezone

它以秒为单位打印协调世界时的偏移量(要考虑夏令时,请参阅time.altzone

代码语言:javascript
复制
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

代码语言:javascript
复制
utc_offset = time.localtime().tm_gmtoff

注意:在some edge cases中,time.daylight可能会给出错误的结果。

如果tm_gmtoff在Python 3.3+上可用,datetime会自动使用它:

代码语言:javascript
复制
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来构建本地和协调时间的子结构:

代码语言:javascript
复制
import time
from datetime import datetime

ts = time.time()
utc_offset = (datetime.fromtimestamp(ts) -
              datetime.utcfromtimestamp(ts)).total_seconds()

要获取过去/未来日期的协调世界时偏差,可以使用pytz时区:

代码语言:javascript
复制
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年期间的欧洲/莫斯科时区。

票数 101
EN

Stack Overflow用户

发布于 2015-04-04 07:30:11

我喜欢:

代码语言:javascript
复制
>>> strftime('%z')
'-0700'

我首先尝试了JTS的答案,但它给了我错误的结果。我现在在-0700,但它说我在-0800。但我必须做一些转换,才能得到一些我可以减去的东西,所以可能答案是不完整的而不是不正确的。

票数 3
EN

Stack Overflow用户

发布于 2020-05-19 00:34:22

time module有一个时区偏移量,以“协调世界时以西的秒数”表示。

代码语言:javascript
复制
import time
time.timezone
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3168096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档