在python中获取系统本地时区

ntg*_*ntg 13 python pytz python-2.7 pandas timezone-offset

看起来很奇怪,但我找不到使用Python中的Pandas/pytz找到本地时区的简单方法.

我可以:

>>> pd.Timestamp('now', tz='utc').isoformat()
Out[47]: '2016-01-28T09:36:35.604000+00:00'
>>> pd.Timestamp('now').isoformat()
Out[48]: '2016-01-28T10:36:41.830000'
>>> pd.Timestamp('now').tz_localize('utc') - pd.Timestamp('now', tz='utc')
Out[49]: Timedelta('0 days 01:00:00')
Run Code Online (Sandbox Code Playgroud)

哪个会给我时区,但这可能不是最好的方法...在pytz或pandas中是否有命令来获取系统时区?(最好是在python 2.7中)

Sel*_*cuk 20

我认为这不可能使用pytzpandas,但你可以随时安装python-dateutiltzlocal:

from dateutil.tz import tzlocal
datetime.now(tzlocal())
Run Code Online (Sandbox Code Playgroud)

要么

from tzlocal import get_localzone
local_tz = get_localzone()
Run Code Online (Sandbox Code Playgroud)

  • 如果您想要实际的时区名称作为字符串,则可以使用datetime.now(tzlocal())。tzname()。它将输出三个字母的时区代码。例如,山区时间的“ MST”。 (4认同)

Mar*_*ans 16

time.timezone 应该管用.

本地(非DST)时区的偏移量,以UTC为单位的西秒(西欧大部分地区为负,美国为零,英国为零).

除以3600将以小时为单位给出补偿:

import time

print(time.timezone / 3600.0)
Run Code Online (Sandbox Code Playgroud)

这不需要任何其他Python库.

  • 正确,这给出了非DST本地时区.如果您需要知道DST是否处于活动状态,您可以使用`time.localtime().tm_isdst> 0 (4认同)
  • 这没有考虑夏令时。 (3认同)

小智 11

我发现在许多情况下这是有效的:(自 Python 3.6 起)

from datetime import datetime

# use this extension and it adds the timezone
tznow = datetime.now().astimezone()
print(tznow.isoformat())
2020-11-05T06:56:38.514560-08:00

# It shows that it does have a valid timezone
type(tznow.tzinfo)
<class 'datetime.timezone'>
Run Code Online (Sandbox Code Playgroud)

我觉得这很方便,因为它不依赖于外部包。它似乎只适用于 Python3(但不适用于 Python2)