jfs*_*jfs 81
import time
print -time.timezone
Run Code Online (Sandbox Code Playgroud)
它以秒为单位打印UTC偏移量(考虑夏令时(DST),请参阅time.altzone:
is_dst = time.daylight and time.localtime().tm_isdst > 0
utc_offset = - (time.altzone if is_dst else time.timezone)
Run Code Online (Sandbox Code Playgroud)
其中utc偏移量通过以下方式定义:"要获取本地时间,请将utc偏移量添加到utc时间."
在Python 3.3+中,如果底层C库支持它,则有tm_gmtoff
属性:
utc_offset = time.localtime().tm_gmtoff
Run Code Online (Sandbox Code Playgroud)
注意: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)
Run Code Online (Sandbox Code Playgroud)
要以解决time.daylight
问题的方式获取当前UTC偏移量并且即使tm_gmtoff
不可用也能正常工作,可以使用@jts建议的子网划分本地和UTC时间:
import time
from datetime import datetime
ts = time.time()
utc_offset = (datetime.fromtimestamp(ts) -
datetime.utcfromtimestamp(ts)).total_seconds()
Run Code Online (Sandbox Code Playgroud)
要获得过去/未来日期的UTC偏移量,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()
Run Code Online (Sandbox Code Playgroud)
它在DST过渡期间有效,即使当地时区在当时具有不同的UTC偏移量,例如2010-2015期间的欧洲/莫斯科时区,它也适用于过去/未来日期.
小智 29
gmtime()
将返回UTC时间并localtime()
返回当地时间,因此减去两者应该给你utc偏移量.
我喜欢:
>>> strftime('%z')
'-0700'
Run Code Online (Sandbox Code Playgroud)
我首先尝试了 JTS 的答案,但它给了我错误的结果。我现在在-0700,但它说我在-0800。但我必须先进行一些转换才能得到可以减去的东西,所以也许答案不完整而不是错误。
归档时间: |
|
查看次数: |
36607 次 |
最近记录: |