Python 如何验证生日是否合法?

一个有效生日的要求如下:

  1. 生日不能大于当前日期,不能小于某个日期,如19000101
  2. 日期要合法,不能是 20111345
  3. 兼容闰年处理,如20200229 是合法的,20190229 就是非法的

请问满足以上需求的 Python 代码怎么写?

PHP 中有checkdate()函数,已经包含了闰年的处理,查了 Python 的 datetime 标准库,作为初学者还不太明白怎么用,也没有发现有现成的方法可以调用,整个过程都需要完全实现吗?是否有部分标准库可以支持?比如闰年的判断。所以来请教一下 :)

阅读 3.8k
4 个回答

先说结论:datetime 可以实现你的大部分需求(你的 2 和 3 要求), 和你说的 checkdate 类似的用法是 datetime.date(year, month, day),如果日期合法则返回一个 date 对象,否则抛出异常;然后你可以将得到的 date 对象和预设的日期进行比较来实现你的需求 1


此外,

我对你查了标准库表示怀疑,python 的文档是非常详细的,如果你看了 datetime 文档,你还不知道 datetime 如何使用,那我觉得 python 可能不适合你

经过请教,最终得到的代码是

def check_birthday(birthday):
    try:
        datetime.datetime.strptime(birthday, '%Y%m%d').date()
    except ValueError:
        return False
    else:
        return '19000101' < birthday < datetime.date.today().strftime('%Y%m%d')

datetime.datetime.strptime("20190228", '%Y%m%d')
用datetime模块的strptime函数获取时间元组,成功为合法时间,错误为非法时间.

新手上路,请多包涵

楼主,谢谢你。我刚好也在找这个方法。我也是python新手。谢谢你的分享

推荐问题