Python Pendulum 库2024年8月29日 | 阅读 7 分钟 在本教程中,我们将学习 Python 的 pendulum 库。我们将讨论它的特性和用法。Python 提供了 datetime 模块,这是处理日期和时间最重要的库之一,它非常灵活,并附带了许多有用的方法。 然而,datetime 模块存在一些限制,例如在不同时区中会出错。有时,我们需要导入第三方库作为补充,并且需要导入 pytz 第三方库来执行 datetime 无法完成的任务。因此,我们有了一个名为 pendulum 库的解决方案。让我们来理解 Python 的 pendulum 库。 引言pendulum 库是 Python 的一个日期和时间操作库,它提供了比内置 datetime 模块更直观、更易于使用的接口。 Pendulum 库的特性
我们可以使用以下命令进行安装。 现在,我们导入 pendulum 库来检查它是否已正确安装。 pendulum 这个名字似乎有点长,所以我们将其导入为 pdl。 让我们使用 pendulum 创建 datetime 对象,并查看其对象类型。 示例 - 输出 True 虽然 pendulum 提供了更直观、更易于使用的界面来处理 Python 中的日期和时间,但需要注意的是,pendulum 实际上继承自内置的 datetime 模块。这意味着 pendulum 包含了 datetime 的所有特性和功能,我们可以使用原始的 datetime 方法和属性来处理 pendulum 的 datetime 对象。 换句话说,pendulum 的 datetime 对象是一个 Python datetime 对象,它增加了 pendulum 库提供的额外特性和方法。因此,如果您熟悉在 Python 中处理 datetime 对象,可以在使用 pendulum 时利用这些知识。 处理时区pendulum 库最强大的特性之一是它对时区的支持,而这正是内置 datetime 模块在处理时可能遇到困难的关键领域。在 Python 3.9 之前,为了处理 IANA 时区,必须依赖 pytz 等第三方库。 使用 pendulum,您可以轻松处理超过 500 个时区,包括历史时区数据和夏令时转换支持。这使得在处理不同时区的日期和时间计算以及在它们之间进行转换时,更加容易,而不会出现错误或意外行为。 让我们理解下面的例子。 示例 - 输出 2021-11-06T00:00:00+11:00 2021-11-06T00:00:00+10:00 2023-02-23T19:14:26.647322+05:30 2023-02-23T14:44:26.647322+01:00 解释 - 首先,我们使用 now() 方法创建一个具有本地时区的 pendulum datetime 对象。然后,我们创建另一个位于 Australia/Melbourne 时区的 datetime 对象,以及一个位于 Australia/Queensland 时区的第三个 datetime 对象。 前两个 datetime 对象表示同一时刻(2021 年 11 月 6 日午夜),但在不同的时区(Australia/Melbourne 和 Australia/Queensland)。 后两个 datetime 对象表示当前时刻(代码执行时),但同样是在不同的时区(本地时区和 Europe/Paris)。 日期时间解析在编程中最常见的任务之一就是解析日期时间。虽然 Python 的内置 datetime 模块非常适合这项任务,但值得注意的是,Python 使用的日期时间字符串格式与其他许多编程语言不同。具体来说,Python 使用 %Y%m%d 格式表示日期,这并非其他语言中最常见的格式。 我们可以使用 from_format() 方法来解析日期。 示例 - 输出 DateTime(2023, 11, 3, 21, 0, 0, tzinfo=Timezone('UTC')) 除了支持 %Y%m%d 格式外,Python 中的 pendulum 模块还完全支持其他常见的日期时间格式,例如 RFC 3339 和 ISO 8601。这意味着我们可以解析这些格式的日期时间字符串,而无需手动指定格式代码。在 Python 中处理日期时间字符串时,这可以节省大量时间。 示例 - 输出 DateTime(2022, 12, 3, 22, 0, 0, tzinfo=Timezone('UTC')) 除了这些之外,Pendulum 还可以即时支持更多格式。例如:仅包含数字的日期时间。 示例 - 输出 DateTime(2023, 9, 5, 0, 0, 0, tzinfo=Timezone('UTC')) pendulum 库一个有趣的特性是它可以根据年份、周数和星期几来创建 datetime 对象。这可以通过 datetime 方法实现,如下面的代码示例所示。 示例 - 输出 DateTime(2022, 11, 5, 0, 0, 0, tzinfo=Timezone('UTC')) 我们可以单独获取日期对象或时间对象,需要指定 exact=True,这比 datetime 容易得多。 输出 Date(2023, 11, 29) Time(22, 0, 0) 字符串格式化我们也可以使用 pendulum 来格式化给定的字符串。我们将执行将 datetime 转换为带有格式的字符串。 首先,我们使用 now() 方法创建 datetime 对象。 DateTime(2023, 2, 24, 18, 12, 58, 297781, tzinfo=Timezone('Asia/Calcutta')) 以下是 pendulum 的 to_string 方法的一些示例。 示例 - 输出 '2023-02-24' '18:12:58' 'Feb 24, 2023' 'Fri, Feb 24, 2023 6:12 PM' '2023-02-24T18:12:58.297781+05:30' '2023-02-24T18:12:58+05:30' 'Friday, 24-Feb-2023 18:12:58 IST' 我们也可以格式化一些随机单词为格式字符串,并让它们从格式中转义。 输出 'Hi! Today is 24 February, 2023 Friday 18:12:58 PM' 查找相对日期时间在根据给定日期时间查找相对日期时间方面,内置的 Python datetime 模块还有改进的空间。例如,为了使用内置模块确定当前月的最后一天,我们必须从 datetutil 模块导入 relativedelta。让我们来理解下面的示例。 示例 - 输出 datetime.datetime(2023, 2, 28, 0, 0) 此外,使用内置模块的代码可能难以阅读,因为我们将 day=31 作为参数传递,即使这种方法可能适用于少于 31 天的月份。 使用 pendulum 可以更轻松地完成此操作。 示例 - 输出 DateTime(2023, 2, 24, 0, 0, 0, tzinfo=Timezone('Asia/Calcutta')) DateTime(2023, 2, 1, 0, 0, 0, tzinfo=Timezone('Asia/Calcutta')) DateTime(2023, 2, 24, 23, 59, 59, 999999, tzinfo=Timezone('Asia/Calcutta')) DateTime(2023, 2, 28, 23, 59, 59, 999999, tzinfo=Timezone('Asia/Calcutta')) datetime 模块在查找星期几方面也存在不足。例如 - 我们想找到下周二的日期,在 datetime 中可以这样做。 示例 - 输出 datetime.datetime(2023, 2, 27, 18, 42, 48, 88371) 正如我们所见,上面的代码有点复杂,开发人员需要花一些时间来理解它。使用 pendulum 可以轻松地完成。 示例 - 输出 DateTime(2023, 2, 28, 0, 0, 0, tzinfo=Timezone('Asia/Calcutta')) 使用 Pendulum,我们不必担心应该使用 0 还是 1 来表示星期二,因为它为此目的使用了枚举。 pendulum 库还提供了 previous() 方法来获取上一个星期一。通过设置 keep_time=True 参数,我们可以保留时间部分。 示例 - 输出 DateTime(2023, 2, 21, 18, 54, 6, 591922, tzinfo=Timezone('Asia/Calcutta')) DateTime(2023, 2, 21, 0, 0, 0, tzinfo=Timezone('Asia/Calcutta')) 人类可读内置的 Python datetime 模块提供了 timedelta 工具,可以有效地执行比较任务。尽管如此,Pendulum 有潜力通过提供更用户友好的输出,当比较两个 datetime 对象时,来增强此功能。 例如,Pendulum 中的 **diff_for_humans()** 方法可以用于将 datetime 对象与当前时间进行比较,并生成人类易于理解的输出。 示例 - 输出 'in 5 days' '1 year ago' 结论总而言之,pendulum 库是 Python 中处理 datetime 信息的强大而直观的工具。它提供了一系列功能,可以更轻松地处理常见的与日期时间相关的任务,例如查找相对日期和时间、处理时区以及以各种格式解析日期时间字符串。与内置的 datetime 模块相比,pendulum 提供了更简洁、更直观的 API,可以提高处理日期时间信息的代码的可读性和可维护性。总的来说,pendulum 是 Python 生态系统中一个有价值的补充,对于任何涉及处理日期时间信息的项目都值得考虑。 |
引言 本文我们讨论了使用 Python 进行摄影测量。您是否曾想过我们如何理解我们看到的东西?比如我们看到有人在散步,无论我们是否意识到,我们都会利用先验知识,我们的大脑会理解正在发生的事情并将其存储为事实……
阅读 6 分钟
在 Python 中,使用广度优先和深度优先搜索技术来搜索树或图。这两者都是每个新手 Python 程序员必须掌握的最重要的主题。我们将探讨 Python 中的广度优先搜索到底是什么,它的算法是如何工作的,如何...
阅读 6 分钟
如果我们定义一个复数的 Python 类,以下方法是执行基本复数运算所必需的。add() 方法用于将给定的两个复数相加。sub() 方法用于将给定的两个复数相减。mul() 方法用于将给定的两个复数相乘...
阅读 4 分钟
Python 中“==”和“is”运算符的区别 在 Python 中比较对象时,身份运算符通常用于应使用相等运算符 == 的地方。在实践中,在尝试比较数据时使用 is 很少是一个好主意。身份运算符...
阅读 3 分钟
Python 的 OS 模块提供了与操作系统交互的方法。OS 是 Python 的基本实用程序模块。该模块允许您随时访问特定于操作系统的功能。'os' 和 'os.path' 模块包含各种与文件系统相关的函数。OS 模块的功能有助于...
阅读 3 分钟
获取输入是与用户交互或获取数据以提供某些结果的一种方式。Python 提供了两种内置方法来从键盘读取数据。这些方法如下。input(prompt) raw_input(prompt) input() input 函数用于所有最新版本的 Python。它接受...
阅读 2 分钟
引言数据可视化简化和改进复杂信息可用性的能力经常至关重要。在当今以数据为中心的世界中,制作定制地图是传达数据的一种非常有效的方式。Python 和 Matplotlib 库可以协同工作,创建一个用于数据可视化的强大工具...
阅读 3 分钟
先决知识:Python中的函数 你可能已经知道“递归”这个词的意思。根据谷歌的解释,它的意思是“一个过程或定义的重复应用”。在编程中也是如此,它应用于函数。任何调用自身的函数...
7 分钟阅读
Python | wxPython 模块 我们都曾想过,是什么让一个应用程序在第一时间就与众不同并具有吸引力?如果我们中有人想到的是应用程序的用户界面,是的,我们是对的。应用程序的用户界面产生了巨大的差异...
7 分钟阅读
Python因其易用性和简洁性而被认为是最受欢迎的通用编程语言之一。此外,GraphQL,一种用于应用程序编程接口和服务器运行时的声明性查询语言,与Python配合得非常好。然而,只有很少的综合性...
阅读 8 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India