关于 Python 中的 pytz 模块和 time 模块

Posted

技术标签:

【中文标题】关于 Python 中的 pytz 模块和 time 模块【英文标题】:Regarding the pytz module and the time module in Python 【发布时间】:2021-02-04 09:18:08 【问题描述】:

我是 Python 的初学者,并试图了解如何处理日期和时间。您能帮我理解以下概念吗?

在时间模块中,我们可以通过以下方式获取本地时区,

import time

if time.daylight:
    local_timezone_name = time.tzname[0]
    utc_offset = time.timezone
else:
    local_timezone_name = time.tzname[1]
    utc_offset = time.altzone

所以我想澄清的是,

    在处理本地时区而不是使用 pytz 模块时,仅使用上述时间模块就足够了吗?如果不是,为什么需要 pytz 模块? 在 Python 中处理日期和时间时,使用 pytz 模块可以获得哪些优势? (我不明白它与 Python 已经内置的内容有什么不同,以及它如何有效地处理日期和时间?)

谢谢。

【问题讨论】:

除了time 模块,标准库中还有datetimecalendar 模块。并且 zoneinfo 使用 Python 3.9,因此您不再需要 pytz(或类似的第三方包)。 【参考方案1】:

说来话长。

注意:pytz 现已过时(两周后),因此在 Python 3.9 中,您可以直接使用标准库。

问题:pytz 是独立于 Python 版本更新的,因此它可以快速更改时区更改。一个国家在一周左右的时间内决定更改夏令时实施的情况并不少见。如果您不经常更新,这将导致使用标准 Python 出现很多问题(并且它需要很多负担,只需更新时区文件中的一行)。所以 Python 没有包含时区信息,而是包含 UTC(但它可以处理时间偏移和日光标志),以及一些关于您当地时区(以及日光)的信息。

现在看来他们找到了解决方案,但 Python 3.9 非常新(两周前发布)。

所以,如果您没有 python 3.9,那么 pytz 是您的最佳选择。您已更新时区和夏令时。

【讨论】:

对于新手,我推荐dateutil,因为它避免了pytz 的一些陷阱(想想“本地化陷阱”...)。

以上是关于关于 Python 中的 pytz 模块和 time 模块的主要内容,如果未能解决你的问题,请参考以下文章

Google App Engine - Python 3 - ModuleNotFoundError:没有名为“pytz”的模块

python 通过pytz模块进行时区的转换,获取指定时区的时间

python模块-pytz时区转换

Python中的时区转换

python 关于时区

python(pytz)中的奇怪时区行为