from datetime import datetime


def 取年龄(出生日期: str) -> int | None:
    """根据出生日期计算当前年龄。

    功能说明:
        - 这个函数用于根据出生日期计算一个人现在的周岁年龄。
        - 输入格式是 ``YYYY-MM-DD``。
        - 如果今年生日还没到，就会自动减 1 岁。
        - 输入格式不正确或出生日期晚于今天时，函数返回 ``None``。

    Args:
        出生日期: 出生日期字符串。

    Returns:
        成功时返回年龄；失败时返回 ``None``。
    """
    try:
        出生日期对象 = datetime.strptime(出生日期.strip(), "%Y-%m-%d").date()
        今天 = datetime.now().date()
        if 出生日期对象 > 今天:
            return None
        年龄 = 今天.year - 出生日期对象.year
        if (今天.month, 今天.day) < (出生日期对象.month, 出生日期对象.day):
            年龄 -= 1
        return 年龄
    except Exception:
        return None


if __name__ == "__main__":
    print("===== 示例1：普通出生日期 =====")
    print("结果:", 取年龄("2000-08-15"))

    print("\n===== 示例2：闰年出生日期 =====")
    print("结果:", 取年龄("2004-02-29"))

    print("\n===== 示例3：今天出生，年龄应为 0 =====")
    print("结果:", 取年龄(datetime.now().strftime("%Y-%m-%d")))

    print("\n===== 示例4：未来日期 =====")
    print("结果:", 取年龄("2999-01-01"))

    print("\n===== 示例5：输入错误格式 =====")
    print("结果:", 取年龄("2000/08/15"))

    print("\n===== 示例6：应用场景-根据出生日期自动填写会员年龄 =====")
    会员信息 = {"name": "张三", "birth": "1998-06-18"}
    print("年龄:", 取年龄(会员信息["birth"]))
