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

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

在本文中,我们将展示如何使用python进行日期验证。现在我们看到2种方法来完成这个任务−

  • 使用datetime.strptime()函数

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

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

算法(步骤)

以下是要执行所需任务的算法/步骤−

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

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

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

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

  • 在try块内,将给定日期字符串和日期格式作为参数传递到datetime模块的datetime类的strptime()函数(将字符串格式的时间戳格式化为日期时间对象)中,并将结果保存在变量中。

  • 在try块内打印上述结果。如果没有错误,则在此处打印格式化日期。

  • 如果上述日期验证失败,则将执行except块。在except块内,如果出现ValueError,则打印适当的文本。

例子

以下程序使用strptime()函数返回给定日期是否有效−

# 导入datetime模块
import datetime

# 输入日期
date_string = '2017-12-31'

# 给出日期格式
date_format = '%Y-%m-%d'

# 使用try-except语句块处理异常
try:

   # 使用strptime()函数格式化日期
   dateObject = datetime.datetime.strptime(date_string, date_format)
   print(dateObject)

# 如果日期验证失败
except ValueError:

   # 如果ValueError出现,则打印适当的文本
   print("数据格式不正确,应该是YYYY-MM-DD")
Python

输出

在执行上述程序时,将生成以下输出−

2017-12-31 00:00:00
Python

您可以使用许多其他指令来解析日期。以下是由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 小时(24小时制)的十进制数[00,23]。
%w 十进制数,表示一周中的星期[0(星期日),6]。
%W 十进制数,表示一周中的星期[00,53](星期一作为一周的第一天)。新年初的第一个星期一以前的所有天被认为是第0周。
%x 区域设置的适当日期表示。
%X 区域设置的适当时间表示。
%y 十进制数,表示没有世纪的年份[00,99]。
%Y 十进制数,表示有世纪的年份。
%Z 时区名称(如果不存在时区,则没有字符)。
%% 字符“%”本身。

方法二:使用dateutil.parser.parse()函数

在这种方法中,我们使用一个独立的内置函数, dateutil.parser ,以检查已验证的格式。这不需要格式来验证日期。

算法(步骤)

  • 使用 import 关键字,从日期工具模块导入 parser
解析器模块可以解析多种不同格式的日期时间字符串。对于在Python中解析日期和时间,没有比dateutil更好的包了。tz模块包括查找时区所需的所有内容。当这些模块一起使用时,将字符串转换为时区感知的日期时间对象相对简单。
Python
  • 输入日期作为字符串,并创建一个变量以存储它。

  • 打印给定的输入日期。

  • 使用 try-except 块来处理异常。在 try 块内,使用parse()函数解析给定的日期字符串。如果给定的日期正确,则打印true。

  • 如果日期不正确/无效,则执行except块代码。如果给定日期的解析错误,则会引发ValueError,因此except块处理此错误,并打印一些文本以表明给定日期未经验证。

示例

以下程序使用parse()函数返回给定日期是否有效−

# 从dateutil模块导入解析器
from dateutil import parser

# 输入日期
date_string = '23-41-2021'

# 打印输入日期
print("Input Date:", date_string)

# 使用try-except块来处理异常
try:

   # 使用parse()函数解析日期字符串
   # 如果日期格式正确,则返回true,否则进入except块
   print(bool(parser.parse(date_string)))

# 如果日期验证出错
except ValueError:

   # 如果出现ValueError,则打印适当的文本
   print("Incorrect data format")
Python

输出

在执行上述程序时,将生成以下输出 −

Input Date: 23-41-2021
Incorrect data format
Python

结论

本文介绍了如何使用两种不同的方法验证给定日期。我们还学习了strptime()函数支持的其他指令。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册