使用 Python 获取最近一个工作日


在当今快节奏的商业环境中,全球范围内有大量的业务正在进行,开发者需要准确地分析日期并保持最新。工作日与普通日期不同。工作日与普通日期不同。通常指办公室运作的日子,例如股票市场、政府机关、学校、办公室、银行等。在处理涉及此类机构的现实问题时,开发者必须根据工作日设计系统。本文将解释如何在 Python 中获取最近一个工作日。

使用 datetime 库

datetime 是一个流行的 Python 库,允许我们处理日期、时间、时间戳等。它允许我们操作、格式化以及对日期执行多种计算和操作。该库为我们提供了多个类,如 datetime、date、time、timedelta,以处理不同类型的操作。我们可以使用 "today" datetime 方法访问当前日期。由于通常一周有五个工作日,我们可以编写程序仅访问前一天,该天属于工作日类别。

语法

timedelta(days = <number of days>)

这里的 timedelta 是 timedelta 模块提供的类。它表示两个日期或时间之间的差异。days 参数以整数形式获取天数,作为我们需要使日期差异的持续时间。

示例

在下面的示例中,我们首先导入了 datetime 和 timedelta 类。我们定义了 get_previous_day 函数,该函数根据当前日期计算前一个工作日。"today" 方法检索当前日期;timedelta 方法返回前一天,延迟传递的参数。我们将参数传递为 1,这意味着我们想要前一天。使用 while 语句,我们只接受也属于工作日类别的那一天。我们使用“strftime”方法以年-月-日的格式返回前一个工作日。

Open Compiler
from datetime import datetime, timedelta def get_previous_business_day(): today = datetime.today() one_day = timedelta(days=1) previous_day = today - one_day while previous_day.weekday() >= 5: previous_day -= one_day return previous_day.strftime("%Y-%m-%d") print(f"The previous business day is: {get_previous_business_day()}")

输出

The previous business day is: 2023-05-26

使用 Pandas 库的 DateOffset

Pandas 是 Python 中一个流行的数据分析库。它还提供了一种方便的方法来处理时间。Pandas 的 Timestamp 方法可以将日期转换为 Timestamp 对象——pd.Timestamp。Pandas 中的 offsets 模块提供了 BusinessDay 类,表示单个工作日。通过将 n 参数指定为 1,您可以创建一个表示一个工作日的 BusinessDay 对象。

语法

pd.DateOffset(days=<number of days>)

DataOffset 类以天数作为必需参数。它表示表示特定天数的时间偏移量。DateOffset 对象允许您通过添加或减去特定天数和其他时间组件(如果需要)来执行日期运算。

示例代码

我们在下面的代码中使用了 Pandas 库来获取前一个工作日。我们创建了一个名为 get_previous_business_day 的函数。在此函数下,我们使用 today 方法获取当前日期。我们使用 DateOffset 来移动日期。我们使用 bdate_range 方法和 periods=1 参数来指定我们想要前一个工作日。

Open Compiler
import pandas as pd def get_previous_business_day(): today = pd.Timestamp.today() previous_day = today - pd.DateOffset(days=1) previous_business_day = pd.bdate_range(end=previous_day, periods=1)[0] return previous_business_day.strftime("%Y-%m-%d") print(f"The previous business day is: {get_previous_business_day()}")

输出

The previous business day is: 2023-05-26

使用 Pandas 库的 BusinessDay 方法

Pandas 库中的 BusinessDay 方法是处理工作日和自定义日历的强大工具。您必须首先创建一个“BusinessDay”对象;此方法下的每个日期都表示一个工作日(不包括周末)。

语法

pd.tseries.offsets.BusinessDay(<number of days>)

该函数定义了一个时间偏移量,该偏移量表示单个工作日。该函数处理周末(星期六和星期日)。该函数在工作日类别下以天数作为参数。

示例

在下面的示例中,我们指定了日期“2023-05-28”。我们需要计算此日期之前的前一个工作日。我们使用 date_to_offset 作为参数调用 get_previous_business_day 函数。在函数下,我们仅使用 BusinessDay 方法来延迟关于工作日的日期。请注意,我们不需要为工作日显式编写一些代码。该方法会处理。

Open Compiler
import pandas as pd def get_previous_business_day(date): previous_business_day = date - pd.tseries.offsets.BusinessDay(1) return previous_business_day date_to_offset = pd.Timestamp('2023-05-28') previous_business_day = get_previous_business_day(date_to_offset) print(f"The previous business day is: {previous_business_day}")

输出

The previous business day is − 2023-05-26

结论

在本文中,我们了解了如何使用 Python 获取最近一个工作日。Python 提供了多个库和模块来处理工作日。我们可以使用 datetime、pandas 等来处理工作日。所有这些库都具有内置函数,使开发者能够访问工作日。但是,也应该知道,工作日全年都是灵活的。可能会出现偶尔的节假日,因此开发者可能需要使用一些第三方 API 密钥或使代码与实时数据保持一致。

更新于:2023-07-28

2K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告