关于 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
模块,标准库中还有datetime
和calendar
模块。并且 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”的模块