python3 通过年月日获取准确的年龄

要做个防沉迷验证,需要精确判断0-8,8-16,16-18和18+的用户,单纯使用年份相减显得不太严谨

解决方案

def get_user_age(idcard):
    birth_date = datetime.datetime(year=int(idcard[6:14][:4]), month=int(idcard[6:14][4:6]), day=int(idcard[6:14][6:8]))
    now_time = datetime.datetime.now()
    age = now_time.year - birth_date.year
    if now_time.year > birth_date.year and (birth_date.month > now_time.month or (birth_date.month == now_time.month and birth_date.day > now_time.day)):
        # 如果今年未到生日那天,那么应该减去一岁,不然就算12月份的生日,到了1月也会算成一岁
        # now_time.year > birth_date.year 是为了规避现在是2022年,然后出生年份也是2022年的话,最后age会变成-1的问题
        age -= 1
    return age

USE

print(get_user_age('000000199505060000'))
# 返回27

GPT

要通过年月日获取准确的年龄,可以使用 Python 中的 datetime 模块和 dateutil 模块。具体来说,您需要执行以下步骤:

导入 datetime 和 dateutil 模块:

python
import datetime
from dateutil.relativedelta import relativedelta

定义出生日期,并将其转换为 datetime 对象:

python
birthday = datetime.datetime(year=1990, month=4, day=15)

计算当前日期与出生日期之间的时间差,并使用 relativedelta 函数获取相对时间:

python
today = datetime.datetime.today()
age = relativedelta(today, birthday)

获取 age 对象中的年龄信息:

python
print("年龄:{} 岁 {} 个月 {} 天".format(age.years, age.months, age.days))

在这个例子中,将会输出当前时刻与 1990 年 4 月 15 日之间的年龄。

需要注意的是,上述方法计算的是当前时刻与出生日期之间的准确年龄,如果需要考虑闰年和月份天数等因素,可以使用其他更复杂的方法进行计算。

“python3 通过年月日获取准确的年龄”的一个回复

发表评论

您的电子邮箱地址不会被公开。