如何在Python中进行日期验证?

如何在Python中进行日期验证?

在本文中,我们将向您展示如何在Python中进行日期验证。现在我们来看看实现此任务的2种方法:

  • 使用datetime.strptime()函数

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

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

算法(步骤)

下面是要执行所需任务的算法/步骤:

  • 使用import关键字导入 datetime (用于处理日期和时间)模块。

  • 将日期输入为字符串,并创建一个变量来存储它。

  • 将日期格式输入为字符串,并创建另一个变量来存储它。

  • 使用 try-except 块来处理异常(在Python中,Try和Except语句用于处理这些错误。如果程序中没有错误,则try块将执行某些代码以检查错误。另一方面,如果程序在前述try块中遇到错误,则在except块中的代码将被执行)。

  • 在try块内,将给定的日期字符串和日期格式作为参数传递给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 关键字,导入 parser 函数,从dateutil模块中导入。

解析器模块可以解析多种不同格式的日期时间字符串。在Python中,没有比dateutil这个包更好的用于解析日期和时间的工具。tz模块包含了查找时区所需的一切内容。当这些模块一起使用时,将字符串转换为带有时区信息的datetime对象相对简单。

  • 将日期作为字符串输入并创建一个变量存储它。

  • 打印所给的输入日期。

  • 使用 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()函数支持的其他指令。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程