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(hours=小时数)
        return 新时间.strftime("%Y-%m-%d %H:%M:%S")
    except Exception:
        return None


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

    print("\n===== 示例2：在原时间上减 5 小时 =====")
    print("结果:", 时间加小时("2026-03-20 10:00:00", -5))

    print("\n===== 示例3：跨天增加小时 =====")
    print("结果:", 时间加小时("2026-03-20 23:30:00", 3))

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

    print("\n===== 示例5：小时数不是整数 =====")
    print("结果:", 时间加小时("2026-03-20 10:00:00", "2"))

    print("\n===== 示例6：应用场景-计算工单 4 小时后的超时点 =====")
    建单时间 = "2026-03-20 09:15:00"
    超时时间 = 时间加小时(建单时间, 4)
    print("超时时间:", 超时时间)
