Python 中 Datetime.date 類的 fromisoformat() 函式


Python 中的 datetime.date 類提供了一種方便的方式來表示和操作日期。fromisoformat() 方法允許您從 ISO 格式的字串建立日期物件。

fromisoformat() 函式將解析 ISO 8601 格式的字串,並建立一個表示該日期的日期物件。這在許多情況下都很有用,例如當您需要從日誌檔案中解析日期或與以 ISO 8601 格式提供日期的 API 協作時。

語法

datetime.date.fromisoformat(date_string)

引數 date_string 是一個字串,表示 ISO 格式“YYYY-MM-DD”的日期。

示例 1

我們將使用 fromisoformat() 方法從字串建立日期物件

演算法

  • 載入 datetime 模組

  • 初始化一個包含 ISO 格式日期的字串變數

  • 使用 fromisoformat() 函式將字串轉換為日期物件

  • 列印日期物件

from datetime import date
# date passed as string data type
date_string = "2023-03-31"

# Converts string object to a date object
date_obj = date.fromisoformat(date_string)

print(date_obj)

輸出

2023-03-31

當呼叫 fromisoformat() 時,ISO 格式的字串作為引數傳遞給該函式,該函式嚴格遵循“YYYY-MM-DD”格式。該字串會被解析,並且日期元件(年、月和日)會被提取。類似地,時間也可以透過小時、分鐘和秒來提取。如果解析的字串嚴格遵循 ISO 8601 格式,則會返回一個等效的 datetime 物件。

如果遵循的格式不符合 ISO 格式,則會引發 ValueError。這表示月、日和年沒有按照正確的順序排列或超出預期範圍。

示例 2

以下示例將儲存在列表中的多個字串物件(日期)轉換為日期物件

演算法

  • 匯入 datetime 模組

  • 定義一個包含多個 ISO 格式字串的列表變數

  • 建立一個空列表來儲存日期物件

  • 迴圈遍歷列表中的每個字串,並使用 fromisoformat() 函式將其轉換為日期物件

  • 將日期物件追加到列表中

  • 將列表列印給使用者

import datetime

date_strs = ['2022-01-01', '2022-01-02', '2022-01-03']
date_objs = []

for date_str in date_strs:
   date_objs.append(datetime.date.fromisoformat(date_str))

print(date_objs)

輸出

[datetime.date(2022, 1, 1), datetime.date(2022, 1, 2), datetime.date(2022, 1, 3)]

示例 3

以下示例將儲存在字串中的今天日期和當前時間轉換為日期物件

演算法

  • 匯入 datetime 和 time 模組

  • 使用 date.today() 獲取今天日期的字串表示

  • 列印 ISO 格式的今天日期字串

  • 使用 date.fromisoformat() 函式將今天轉換為日期物件。

  • 將日期物件列印給使用者。

from datetime import date
today= str(date.today());
print("Today's Date as string: %s" %today)
mydate = date.fromisoformat(today);
print(mydate);

輸出

Today's Date as string: 2023-05-20
2023-05-20

結論

使用此函式可以輕鬆高效地將包含 ISO 格式日期的字串轉換為日期物件,以便於進一步操作。

使用 fromisoformat() 函式可以避免手動解析 ISO 格式字串,而手動解析容易出錯。此外,此函式確保生成的日期物件有效且符合 ISO 標準。

此外,Python 的 datetime 模組包含 fromisoformat() 函式,並提供了一系列用於處理日期和時間的實用程式。此模組允許我們格式化日期、在不同的時區之間轉換以及執行各種日期和時間計算。

更新於: 2023-08-23

1K+ 閱讀量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.