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
9条答案
按热度按时间yi0zb3m41#
这应该行得通:
time.tzname
返回两个字符串的元组:第一个是本地非DST时区的名称,第二个是本地DST时区的名称。返回示例:
('MST', 'MDT')
gev0vcfq2#
提供了一个UTC偏移,如ThomasH的答案,但将夏令时考虑在内。
time.timezone
或time.altzone
的值以UTC以西的秒为单位(UTC以东的区域为负值),这与我们实际希望的相反,因此使用了 *-1。如果夏令时当前未生效,则
time.localtime().tm_isdst
将为零(尽管如果某个地区最近更改了其夏令时法律,则这可能不正确)。编辑:marr 75是正确的,我已经相应地编辑了答案。
piztneat3#
我发现这个很好用:
对我来说,这是能够区分夏令时和不。
在Python 3.6中,你可以:
或者
更多详细信息请参考:https://stackoverflow.com/a/39079819/4549682
ryevplcw4#
查看Python Time模块。
太平洋标准时间
g52tjvyc5#
用于计算偏移的代码片段不正确,请参见http://bugs.python.org/issue7229。
正确的处理方法是:
这是在所有的可能性,而不是确切的问题,操作员问,但有两个不正确的片段在页面上和时间错误吸跟踪和修复。
pinkon5k6#
对于Python 3.6+,这可以通过以下代码轻松实现:
但是在Python〈3.6的情况下,在初始日期时间上调用
astimezone()
是不起作用的,所以我们必须用一种稍微不同的方式来做。对于Python 3.x
样本输出:
在荷兰服务器上(Python 3.6.9):
CEST
在孟加拉国服务器上(Python 3.8.2):
+06
更多详情请参见thread。
x8goxv8g7#
要获取
datetime.tzinfo
对象形式的时区信息,请使用dateutil.tz.tzlocal()
:此对象可用于
datetime.datetime.now()
的tz
参数:或者通过
datetime.datetime.astimezone()
调用datetime
对象的tz
参数:inkz8wg98#
获取与UTC的偏移量
timedelta
:或者像这样(比较晦涩,但也管用):
两种解决方案给予相同的结果。例如:
datetime.timedelta(seconds=7200)
zwghvu4y9#
使用
tzlocal
,我们将能够获得本地时区。