如何获取当前时区对应的tz_info对象?

37 投票
8 回答
35863 浏览
提问于 2025-04-15 15:41

python(或者 pytz)中,有没有一个可以跨平台使用的功能,可以返回一个 tzinfo 对象,这个对象对应于电脑上当前设置的时区?

环境变量不能被依赖,因为它们不是跨平台的。

8 个回答

11

tzlocal 模块可以返回 pytz 的时区信息,适用于 *nix 和 win32 系统:

from datetime import datetime
from tzlocal import get_localzone # $ pip install tzlocal

# get local timezone    
local_tz = get_localzone() 


print local_tz.localize(datetime(2012, 1, 15))
# -> 2012-01-15 00:00:00+04:00 # current utc offset
print local_tz.localize(datetime(2000, 1, 15))
# -> 2000-01-15 00:00:00+03:00 # past utc offset (note: +03 instead of +04)
print local_tz.localize(datetime(2000, 6, 15))
# -> 2000-06-15 00:00:00+04:00 # changes to utc offset due to DST

注意:它会考虑到夏令时和非夏令时的 UTC 偏移变化。

12

Python 3.7:

import datetime

datetime.datetime.now().astimezone().tzinfo
15

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,尤其是当我们刚开始学习编程的时候。比如,有人可能在使用某个特定的功能时,发现它没有按照预期工作。这种情况下,了解问题的根源就显得非常重要。

通常,解决问题的第一步是仔细阅读错误信息。错误信息就像是程序在告诉我们哪里出了问题。虽然有时候这些信息看起来很复杂,但它们其实是在给我们提示,帮助我们找到解决方案。

另外,查阅相关的文档或教程也是一个好主意。很多时候,文档会提供使用某个功能的详细说明,甚至会列出常见问题和解决方法。通过这些资源,我们可以更好地理解如何正确使用工具。

最后,向社区求助也是一个不错的选择。像StackOverflow这样的论坛上,有很多经验丰富的开发者,他们乐意帮助新手解决问题。只要我们把问题描述清楚,通常就能得到有用的建议。

>>> import datetime
>>> today = datetime.datetime.now()
>>> insummer = datetime.datetime(2009,8,15,10,0,0)
>>> from pytz import reference
>>> localtime = reference.LocalTimezone()
>>> localtime.tzname(today)
'PST'
>>> localtime.tzname(insummer)
'PDT'
>>> 

撰写回答