strptime时区 - 在Python中获取系统的时区信息?




time mktime时区 (4)

如果您更喜欢UTC偏移字符串:

time.timezone / -(60*60)

我想从Python获取我的系统的默认时区(PST)。 最好的方法是什么? 我想避免分支另一个过程。


我发现这很好用:

import datetime
tz_string = datetime.datetime.now(datetime.timezone.utc).astimezone().tzname()

对我来说,这能够区分夏令时与否。

https://.com/a/39079819/4549682


用于计算偏移量的代码片段不正确,请参阅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

这很有可能,而不是OP提出的确切问题,但页面上有两个不正确的片段,时间错误很难追踪和修复。


给出了像ThomasH的回答中的UTC偏移,但考虑了夏令时。

>>> import time
>>> offset = time.timezone if (time.localtime().tm_isdst == 0) else time.altzone
>>> offset / 60 / 60 * -1
-9

time.timezonetime.altzone的值以UTC为单位的秒数(UTC的东部区域为负值)。 这与我们实际喜欢它的方式相反,因此* -1。

time.localtime().tm_isdst如果夏令时当前没有生效, time.localtime().tm_isdst将为零(尽管如果一个地区最近改变了他们的夏令时法则,这可能不正确)。

编辑:marr75是正确的,我已经相应地编辑了答案。





datetime