python判断日期_python如何判断日期的合法性?

本文介绍了在Python中判断日期合法性的两种方法:一是通过`date()`函数尝试创建date对象,如果输入的日期不合法会抛出异常;二是使用`date.fromisoformat()`函数处理ISO格式的日期字符串。这两个内置机制为Python3提供了简洁且有效的日期合法性检查解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

判断日期的合法性,有两层含义,一是日期格式是否合法,二是格式合法后,其所表示的实际的那一天,是否真实存在!在python中,做这个合法性的判断,so easy!~~

我们需要用到datetime模块中的date。实现对日期合法性的判断,利用的就是python自带的合法性判断机制。

from datetime import date

用date(year,month,day)

创建date对象的时候,python自己就会判断输入日期的合法性,如果不合法会抛出异常。

>>> date(1234,11,1)

datetime.date(1234, 11, 1)

>>> date(2019,10,11)

datetime.date(2019, 10, 11)

>>> date(2019,10,32)

Traceback (most recent call last):

File "", line 1, in

ValueError: day is out of range for month

>>> date(2019,-9,32)

Traceback (most recent call last):

File "", line 1, in

ValueError: month must be in 1..12

>>> date(10000,-9,32)

Traceback (most recent call last):

File "", line 1, in

ValueError: year 10000 is out of range

传入年月日,三个int,date()会自己判断是否合法有效,如果否,抛出ValueError异常。我们可以利用这个机制,自己写一个简单的判断函数:

>>> def isValidDate(year, month, day):

... try:

... date(year, month, day)

... except:

... return False

... else:

... return True

...

这个方法适合所有python3代码,兼容性更好。只是用这个方法可能需要写点代码得到三个int值。

用date.fromisoformat()

原理和上文一样,区别是,fromisoformat函数接收一个字符串参数,而不是int。另一个区别是,这个函数从python3.7才开始有提供。所以,存在一点兼容性的问题。

iso格式的日期,就是:YYYY-MM-DD

>>> def isValidDate(datestr):

... try:

... date.fromisoformat(datestr)

... except:

... return False

... else:

... return True

...

网络上有些同学用python写的判断日期合法性的代码,太复杂了,这些年月日的底层判断,python已经实现了。用本文介绍的方法,应该是最简单的。

-- EOF --

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值