Joh*_*iss 91
这应该工作:
import time
time.tzname
Run Code Online (Sandbox Code Playgroud)
time.tzname 返回两个字符串的元组:第一个是本地非DST时区的名称,第二个是本地DST时区的名称.
示例返回: ('MST', 'MDT')
Dea*_*ean 25
给出了像ThomasH的回答中的UTC偏移,但考虑了夏令时.
>>> import time
>>> offset = time.timezone if (time.localtime().tm_isdst == 0) else time.altzone
>>> offset / 60 / 60 * -1
-9
Run Code Online (Sandbox Code Playgroud)
值time.timezone或time.altzone以秒为UTC的西(与UTC的区域东得到一个负值).这与我们实际喜欢它的方式相反,因此*-1.
time.localtime().tm_isdst 如果夏令时目前没有生效,那么它将为零(尽管如果某个地区最近改变了他们的夏令时法则,这可能不正确).
编辑:marr75是正确的,我已经相应地编辑了答案.
aha*_*ker 17
查看Python 时间模块.
from time import gmtime, strftime
print(strftime("%z", gmtime()))
Run Code Online (Sandbox Code Playgroud)
太平洋标准时间
Imt*_*que 12
对于 Python 3.6+,这可以通过以下代码轻松实现:
import datetime
local_timezone = datetime.datetime.utcnow().astimezone().tzinfo
print(local_timezone)
Run Code Online (Sandbox Code Playgroud)
但是对于 Python < 3.6 来说,调用astimezone()简单的日期时间是行不通的。所以我们必须以稍微不同的方式来做。
所以对于 Python 3.x,
import datetime
local_timezone = datetime.datetime.now(datetime.timezone.utc).astimezone().tzinfo
print(local_timezone)
Run Code Online (Sandbox Code Playgroud)
示例输出:
在荷兰服务器 (Python 3.6.9) 上:
CEST
在孟加拉国服务器 (Python 3.8.2) 上:
+06
更多详细信息可以在此线程中找到。
mar*_*r75 10
用于计算偏移量的代码片段不正确,请参阅http://bugs.python.org/issue7229.
处理这个问题的正确方法是:
def local_time_offset(t=None):
"""Return offset of local zone from GMT, either at present or at time t."""
# python2.3 localtime() can't take None
if t is None:
t = time.time()
if time.localtime(t).tm_isdst and time.daylight:
return -time.altzone
else:
return -time.timezone
Run Code Online (Sandbox Code Playgroud)
这很有可能,而不是OP提出的确切问题,但页面上有两个不正确的片段,时间错误很难追踪和修复.
我发现这很好用:
import datetime
tz_string = datetime.datetime.now(datetime.timezone.utc).astimezone().tzname()
Run Code Online (Sandbox Code Playgroud)
对我而言,这能够区分夏令时与否。
| 归档时间: |
|
| 查看次数: |
64982 次 |
| 最近记录: |