from datetime import datetime


def 是否月初(时间字符串: str) -> bool:
    """判断某个时间是不是月初第一天。

    功能说明:
        - 这个函数用于判断传入日期是不是当月 1 号。
        - 支持 ``YYYY-MM-DD`` 和 ``YYYY-MM-DD HH:MM:SS`` 两种格式。
        - 只判断日期，不看具体时分秒。
        - 输入格式不正确时，函数返回 ``False``。

    Args:
        时间字符串: 要判断的日期或时间字符串。

    Returns:
        是月初返回 ``True``，否则返回 ``False``。
    """
    try:
        时间字符串 = 时间字符串.strip()
        if len(时间字符串) == 10:
            日期对象 = datetime.strptime(时间字符串, "%Y-%m-%d").date()
        else:
            日期对象 = datetime.strptime(时间字符串, "%Y-%m-%d %H:%M:%S").date()
        return 日期对象.day == 1
    except Exception:
        return False


if __name__ == "__main__":
    print("===== 示例1：判断月初日期 =====")
    print("结果:", 是否月初("2026-03-01"))

    print("\n===== 示例2：判断月初完整时间 =====")
    print("结果:", 是否月初("2026-03-01 08:00:00"))

    print("\n===== 示例3：判断非月初日期 =====")
    print("结果:", 是否月初("2026-03-20"))

    print("\n===== 示例4：输入错误格式 =====")
    print("结果:", 是否月初("2026/03/01"))

    print("\n===== 示例5：输入空字符串 =====")
    print("结果:", 是否月初(""))

    print("\n===== 示例6：应用场景-判断是否执行月初批处理 =====")
    print("是否执行批处理:", 是否月初("2026-04-01 00:00:00"))
