如何在 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+ 浏览量

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告