如何在 Python 中進行日期驗證?


在本文中,我們將向您展示如何在 Python 中進行日期驗證。現在我們來看兩種完成此任務的方法:

  • 使用 datetime.strptime() 函式

  • 使用 dateutil.parser.parse() 函式

方法 1:使用 datetime.strptime() 函式

演算法(步驟)

以下是執行所需任務的演算法/步驟:

  • 使用 import 關鍵字匯入 datetime(用於處理日期和時間)模組。

  • 將日期作為字串輸入,並建立一個變數來儲存它。

  • 將日期格式作為字串輸入,並建立一個變數來儲存它。

  • 使用 try-except 塊來 處理異常(在 Python 中,Try 和 Except 語句用於處理這些錯誤。try 塊用於檢查某些程式碼是否存在錯誤,即如果程式不包含錯誤,則 try 塊內的程式碼將執行。另一方面,except 塊內的程式碼將在程式在前面的 try 塊中遇到錯誤時執行)

  • 在 try 塊中,將給定的日期字串和日期格式作為引數傳遞給 datetime 模組的 datetime 類的 strptime() 函式(將字串格式的時間戳格式化為日期時間物件),並將結果儲存到變數中。(閱讀更多關於 Python 日期和時間 的內容)

  • 在 try 塊中列印上述結果。如果沒有任何錯誤,它將列印格式化的日期。

  • 如果上述日期驗證失敗,則將執行 except 塊。在 except 塊中,如果發生 ValueError,則列印相應的文字。

示例

以下程式使用 strptime() 函式返回給定日期是否有效:

# importing datetime module import datetime # input date date_string = '2017-12-31' # giving the date format date_format = '%Y-%m-%d' # using try-except blocks for handling the exceptions try: # formatting the date using strptime() function dateObject = datetime.datetime.strptime(date_string, date_format) print(dateObject) # If the date validation goes wrong except ValueError: # printing the appropriate text if ValueError occurs print("Incorrect data format, should be YYYY-MM-DD")

輸出

執行上述程式後,將生成以下輸出:

2017-12-31 00:00:00

您可以使用許多其他指令來解析日期。strptime() 的格式字串支援以下指令。

指令 含義
%a 本地化的縮寫星期名稱。
%A 本地化的完整星期名稱。
%b 本地化的縮寫月份名稱。
%B 本地化的完整月份名稱。
%c 本地化的適當日期和時間表示形式。
%d 月份中的日期,以十進位制數字表示 [01,31]。
%H 小時(24 小時制),以十進位制數字表示 [00,23]。
%I 小時(12 小時制),以十進位制數字表示 [01,12]。
%j 一年中的日期,以十進位制數字表示 [001,366]。
%m 月份,以十進位制數字表示 [01,12]。
%M 分鐘,以十進位制數字表示 [00,59]。
%p 本地化的 AM 或 PM 等價物。
%S 秒,以十進位制數字表示 [00,61]。
%U 一年中的星期數(星期日作為一週的第一天),以十進位制數字表示 [00,53]。新的一年中在第一個星期日之前的幾天被認為是在第 0 周。
%w 星期幾,以十進位制數字表示 [0(星期日),6]。
%W 一年中的星期數(星期一作為一週的第一天),以十進位制數字表示 [00,53]。新的一年中在第一個星期一之前的幾天被認為是在第 0 周。
%x 本地化的適當日期表示形式。
%X 本地化的適當時間表示形式。
%y 不帶世紀的年份,以十進位制數字表示 [00,99]。
%Y 帶世紀的年份,以十進位制數字表示。
%Z 時區名稱(如果不存在時區,則沒有字元)。
%% 文字 "%" 字元

方法 2:使用 dateutil.parser.parse() 函式

在此方法中,我們使用一個單獨的內建函式 dateutil.parser 來檢查驗證的格式。這不需要格式來驗證日期。

演算法(步驟)

  • 使用 import 關鍵字從 dateutil 模組匯入 parser

The parser module can parse datetime strings in a number of different formats. To parse dates and times in Python, there is no better package than dateutil. The tz module includes everything needed to look for timezones. When these modules are used together, it is relatively simple to convert strings into timezone−aware datetime objects.
  • 將日期作為字串輸入,並建立一個變數來儲存它。

  • 列印給定的輸入日期。

  • 使用 try-except 塊來處理異常。在 try 塊中,使用 parse() 函式解析給定的日期字串。如果給定的日期正確,則列印 true。

  • 如果日期不正確/無效,則將執行 except 塊程式碼。如果給定日期存在解析錯誤,則將引發 ValueError,因此 except 塊處理 ValueError,我們列印一些文字來說明給定的日期未經驗證。

示例

以下程式使用 parse() 函式返回給定日期是否有效:

# importing parser from dateutil module from dateutil import parser # input date date_string = '23-41-2021' # printing the input date print("Input Date:", date_string) # using try-except blocks for handling the exceptions try: # parsing the date string using parse() function # It returns true if the date is correctly formatted else it will go to except block print(bool(parser.parse(date_string))) # If the date validation goes wrong except ValueError: # printing the appropriate text if ValueError occurs print("Incorrect data format")

輸出

執行上述程式後,將生成以下輸出:

Input Date: 23-41-2021
Incorrect data format

結論

在本文中,我們學習瞭如何使用兩種不同的方法來驗證給定的日期。我們還了解了 strptime() 函式支援的其他指令。

更新於: 2023年8月27日

32K+ 瀏覽量

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.