from datetime import datetime
from typing import Optional


def 解析_中文时间(时间字符串: str) -> Optional[datetime]:
    """把中文格式的时间字符串解析成 ``datetime`` 对象。

    功能说明:
        - 这个函数用于把 ``2026年3月20日15时27分56秒`` 这种中文时间，转换成 Python 里的 ``datetime`` 对象。
        - 转成 ``datetime`` 之后，就更方便继续做时间比较、加减、格式转换。
        - 输入格式必须完整包含年月日时分秒。
        - 解析失败时，函数返回 ``None``。

    Args:
        时间字符串: 中文时间字符串。

    Returns:
        解析成功返回 ``datetime`` 对象；失败时返回 ``None``。
    """
    try:
        return datetime.strptime(时间字符串, "%Y年%m月%d日%H时%M分%S秒")
    except Exception:
        return None


if __name__ == "__main__":
    print("===== 示例1：解析标准中文时间 =====")
    print("结果:", 解析_中文时间("2026年3月20日15时27分56秒"))

    print("\n===== 示例2：解析个位数月日时分秒 =====")
    print("结果:", 解析_中文时间("2026年3月2日5时6分7秒"))

    print("\n===== 示例3：解析闰年的日期 =====")
    print("结果:", 解析_中文时间("2024年2月29日08时30分00秒"))

    print("\n===== 示例4：缺少秒数字段 =====")
    print("结果:", 解析_中文时间("2026年3月20日15时27分"))

    print("\n===== 示例5：输入不存在的日期 =====")
    print("结果:", 解析_中文时间("2026年2月30日15时27分56秒"))

    print("\n===== 示例6：应用场景-把中文合同时间转成 datetime 后继续处理 =====")
    合同时间 = "2026年4月1日09时00分00秒"
    解析结果 = 解析_中文时间(合同时间)
    print("解析结果:", 解析结果)
