from datetime import datetime


def 距今分钟数(时间字符串: str) -> float | None:
    """计算某个时间距离现在相差多少分钟。

    功能说明:
        - 这个函数用于比较目标时间和当前系统时间之间的分钟差。
        - 目标时间在未来时返回正数，已经过去时返回负数。
        - 适合做预约倒计时、超时提醒和剩余时间判断。
        - 输入格式不正确时，函数返回 ``None``。

    Args:
        时间字符串: 目标时间字符串，格式为 ``YYYY-MM-DD HH:MM:SS``。

    Returns:
        成功时返回分钟差；失败时返回 ``None``。
    """
    try:
        给定时间 = datetime.strptime(时间字符串.strip(), "%Y-%m-%d %H:%M:%S")
        当前时间 = datetime.now()
        return (给定时间 - 当前时间).total_seconds() / 60
    except Exception:
        return None


if __name__ == "__main__":
    from datetime import timedelta

    print("===== 示例1：目标时间在未来 =====")
    未来时间 = (datetime.now() + timedelta(minutes=30)).strftime("%Y-%m-%d %H:%M:%S")
    print("结果:", 距今分钟数(未来时间))

    print("\n===== 示例2：目标时间在过去 =====")
    过去时间 = (datetime.now() - timedelta(minutes=30)).strftime("%Y-%m-%d %H:%M:%S")
    print("结果:", 距今分钟数(过去时间))

    print("\n===== 示例3：目标时间就是现在附近 =====")
    当前时间 = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    print("结果:", 距今分钟数(当前时间))

    print("\n===== 示例4：输入错误格式 =====")
    print("结果:", 距今分钟数("2026/03/20"))

    print("\n===== 示例5：输入空字符串 =====")
    print("结果:", 距今分钟数(""))

    print("\n===== 示例6：应用场景-查看会议开始前还剩多少分钟 =====")
    会议时间 = (datetime.now() + timedelta(minutes=15)).strftime("%Y-%m-%d %H:%M:%S")
    print("结果:", 距今分钟数(会议时间))
