from datetime import datetime, timedelta


def 取前N天日期(天数: int) -> str | None:
    """返回当前日期往前推 N 天后的日期。

    功能说明:
        - 这个函数用于计算几天前是哪一天。
        - 传入 ``3`` 就表示返回 3 天前的日期。
        - 返回格式固定为 ``YYYY-MM-DD``。
        - 如果天数不是整数，函数返回 ``None``。

    Args:
        天数: 要往前推的天数。

    Returns:
        成功时返回日期字符串；失败时返回 ``None``。
    """
    try:
        return (datetime.now() - timedelta(days=天数)).strftime("%Y-%m-%d")
    except Exception:
        return None


if __name__ == "__main__":
    print("===== 示例1：取 3 天前的日期 =====")
    print("结果:", 取前N天日期(3))

    print("\n===== 示例2：取 0 天前的日期，也就是今天 =====")
    print("结果:", 取前N天日期(0))

    print("\n===== 示例3：取 30 天前的日期 =====")
    print("结果:", 取前N天日期(30))

    print("\n===== 示例4：传入负数，相当于往后推 =====")
    print("结果:", 取前N天日期(-2))

    print("\n===== 示例5：天数不是整数 =====")
    print("结果:", 取前N天日期("3"))

    print("\n===== 示例6：应用场景-查询最近 7 天统计起始日期 =====")
    起始日期 = 取前N天日期(7)
    print("查询起始日期:", 起始日期)
