📜  如何在python中从出生日期计算年龄(1)

📅  最后修改于: 2023-12-03 15:38:35.477000             🧑  作者: Mango

如何在Python中从出生日期计算年龄

在一些应用中,我们需要从出生日期中计算出年龄。在Python中,可以用 datetime 模块和 dateutil 库来实现。

使用 datetime 模块

代码片段:

from datetime import datetime

def calculate_age(birth_date):
    today = datetime.today()
    birth_date = datetime.strptime(birth_date, "%Y-%m-%d")
    age = today.year - birth_date.year
    if today.month < birth_date.month or (today.month == birth_date.month and today.day < birth_date.day):
        age -= 1
    return age

解释:

  1. 导入 datetime 模块。
  2. 定义函数 calculate_age(birth_date),传入参数为出生日期,格式为字符串,例如:"1990-01-01"。
  3. 获取当天日期 today,通过 datetime.today() 方法获取当天的日期和时间。
  4. datetime.strptime() 方法将出生日期 birth_date 转换为 datetime 类型,其中 %Y-%m-%d 表示按照 “年-月-日” 的格式解析字符串。
  5. 计算年龄 age,通过 today.yearbirth_date.year 计算年龄差,首先计算当前年份 today.year 与出生年份 birth_date.year 的差值。
  6. 如果当前月份小于出生月份,或者当前月份等于出生月份但是当前日期小于出生日期,说明还未过完生日,应将年龄减 1。
  7. 返回年龄 age
使用 dateutil 库

代码片段:

from datetime import datetime
from dateutil.relativedelta import relativedelta

def calculate_age(birth_date):
    today = datetime.today()
    birth_date = datetime.strptime(birth_date, "%Y-%m-%d")
    age = relativedelta(today, birth_date).years
    return age

解释:

  1. 导入 datetime 模块和 dateutil 库中的 relativedelta 方法。
  2. 定义函数 calculate_age(birth_date),传入参数为出生日期,格式为字符串,例如:"1990-01-01"。
  3. 获取当天日期 today,通过 datetime.today() 方法获取当天的日期和时间。
  4. datetime.strptime() 方法将出生日期 birth_date 转换为 datetime 类型,其中 %Y-%m-%d 表示按照 “年-月-日” 的格式解析字符串。
  5. 通过 relativedelta() 方法计算年龄差值。
  6. 返回年龄,通过 relativedelta(today, birth_date).years 获取年龄。
总结

以上两种方法都可以从出生日期中计算出年龄,相对而言,dateutil 库中的 relativedelta 方法更加简便易用。