from datetime import datetime


def 获取时间间隔(时间1: str, 时间2: str, 单位: int = 1) -> float | None:
    """计算两个时间之间相差多少。

    功能说明:
        - 这个函数用于计算两个标准时间之间的差值。
        - 你可以选择结果按毫秒、秒、分钟或小时返回。
        - 返回值保留正负号，也就是说如果第二个时间更早，结果会是负数。
        - 输入格式不正确或单位参数不合法时，函数返回 ``None``。

    Args:
        时间1: 起始时间字符串。
        时间2: 结束时间字符串。
        单位: 返回单位，``0`` 毫秒，``1`` 秒，``2`` 分钟，``3`` 小时。

    Returns:
        成功时返回时间差；失败时返回 ``None``。
    """
    try:
        t1 = datetime.strptime(时间1.strip(), "%Y-%m-%d %H:%M:%S")
        t2 = datetime.strptime(时间2.strip(), "%Y-%m-%d %H:%M:%S")
        秒差 = (t2 - t1).total_seconds()

        match 单位:
            case 0:
                return 秒差 * 1000
            case 1:
                return 秒差
            case 2:
                return 秒差 / 60
            case 3:
                return 秒差 / 3600
            case _:
                return None
    except Exception:
        return None


if __name__ == "__main__":
    print("===== 示例1：按秒计算两个时间的间隔 =====")
    print("结果:", 获取时间间隔("2026-03-20 10:00:00", "2026-03-20 10:05:30", 1))

    print("\n===== 示例2：按分钟计算两个时间的间隔 =====")
    print("结果:", 获取时间间隔("2026-03-20 10:00:00", "2026-03-20 11:30:00", 2))

    print("\n===== 示例3：按小时计算两个时间的间隔 =====")
    print("结果:", 获取时间间隔("2026-03-20 08:00:00", "2026-03-20 20:00:00", 3))

    print("\n===== 示例4：第二个时间更早，结果会是负数 =====")
    print("结果:", 获取时间间隔("2026-03-20 10:00:00", "2026-03-20 09:30:00", 1))

    print("\n===== 示例5：单位参数不合法 =====")
    print("结果:", 获取时间间隔("2026-03-20 10:00:00", "2026-03-20 10:05:30", 9))

    print("\n===== 示例6：应用场景-计算一次直播持续了多少分钟 =====")
    开播时间 = "2026-03-20 19:00:00"
    下播时间 = "2026-03-20 21:45:00"
    print("直播时长(分钟):", 获取时间间隔(开播时间, 下播时间, 2))
