from datetime import datetime


def 取一周第几天(时间字符串: str | None = None) -> int | None:
    """返回指定日期是一周里的第几天。

    功能说明:
        - 这个函数用于判断某个日期在一周中排第几天。
        - 返回规则是周一为 ``1``，周日为 ``7``。
        - 支持传入完整时间，也可以不传参数直接判断今天。
        - 输入格式不正确时，函数返回 ``None``。

    Args:
        时间字符串: 时间字符串，格式为 ``YYYY-MM-DD HH:MM:SS``；不传时默认当前时间。

    Returns:
        成功时返回一周中的序号；失败时返回 ``None``。
    """
    try:
        if 时间字符串 is None:
            return datetime.now().weekday() + 1
        时间对象 = datetime.strptime(时间字符串.strip(), "%Y-%m-%d %H:%M:%S")
        return 时间对象.weekday() + 1
    except Exception:
        return None


if __name__ == "__main__":
    print("===== 示例1：周一是一周第几天 =====")
    print("结果:", 取一周第几天("2026-03-23 10:00:00"))

    print("\n===== 示例2：周五是一周第几天 =====")
    print("结果:", 取一周第几天("2026-03-20 10:00:00"))

    print("\n===== 示例3：周日是一周第几天 =====")
    print("结果:", 取一周第几天("2026-03-22 10:00:00"))

    print("\n===== 示例4：不传参数 =====")
    print("结果:", 取一周第几天())

    print("\n===== 示例5：输入错误格式 =====")
    print("结果:", 取一周第几天("2026/03/22"))

    print("\n===== 示例6：应用场景-根据周几决定排班序号 =====")
    print("排班序号:", 取一周第几天("2026-03-24 09:00:00"))
