使用 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”方法以年-月-日的格式返回前一個工作日。

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 引數來指定我們想要前一個工作日。

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 方法來延遲關於工作日的日期。請注意,我們不需要為工作日顯式編寫一些程式碼。該方法會處理。

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+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.