from datetime import datetime, timedelta


def 时间计算(时间字符串: str, 秒数: int) -> str | None:
    """在原时间上增加或减少指定秒数。

    功能说明:
        - 这个函数用于把一个标准时间往后推几秒，或者往前退几秒。
        - 传入的时间格式必须是 ``YYYY-MM-DD HH:MM:SS``。
        - ``秒数`` 可以是负数，负数表示往前推。
        - 输入格式不正确或参数不能参与计算时，函数返回 ``None``。

    Args:
        时间字符串: 原始时间字符串。
        秒数: 要增加的秒数，负数表示减少。

    Returns:
        成功时返回计算后的时间字符串；失败时返回 ``None``。
    """
    try:
        原时间 = datetime.strptime(时间字符串.strip(), "%Y-%m-%d %H:%M:%S")
        新时间 = 原时间 + timedelta(seconds=秒数)
        return 新时间.strftime("%Y-%m-%d %H:%M:%S")
    except Exception:
        return None


if __name__ == "__main__":
    print("===== 示例1：在原时间上加 90 秒 =====")
    print("结果:", 时间计算("2026-03-20 10:00:00", 90))

    print("\n===== 示例2：在原时间上减 45 秒 =====")
    print("结果:", 时间计算("2026-03-20 10:00:00", -45))

    print("\n===== 示例3：跨天增加秒数 =====")
    print("结果:", 时间计算("2026-03-20 23:59:30", 90))

    print("\n===== 示例4：输入错误格式 =====")
    print("结果:", 时间计算("2026/03/20 10:00:00", 90))

    print("\n===== 示例5：秒数不是整数 =====")
    print("结果:", 时间计算("2026-03-20 10:00:00", "90"))

    print("\n===== 示例6：应用场景-计算验证码 5 分钟后的失效时间 =====")
    发送时间 = "2026-03-20 10:30:00"
    失效时间 = 时间计算(发送时间, 300)
    print("失效时间:", 失效时间)
