certflow.utils.date_utils module

日期处理工具模块

提供全局统一的日期格式化和提取功能。

分层约束:本模块属 utils 层,不得依赖 PySide6,须保证在无 Qt 环境下可导入。原先内置的 QDate 构造/解析工具已上移至 certflow.views.common.qdate_utils,此处仅保留向后兼容垫片。

certflow.utils.date_utils.safe_qdate(year, month, day)[源代码]

向后兼容垫片:转发至 views.common.qdate_utils.safe_qdate

Deprecated:

新代码应直接从 certflow.views.common.qdate_utils 导入。 本垫片仅为兼容存量调用点保留,在无 PySide6 环境调用会抛 ImportError。

参数:
  • year (int) -- 年份

  • month (int) -- 月份 (1-12)

  • day (int) -- 日 (1-31,需符合该月实际天数)

返回:

QDate 实例(有效),或 None(参数非法时)

返回类型:

Any | None

certflow.utils.date_utils.parse_qdate(text, fmt='yyyy-MM-dd')[源代码]

向后兼容垫片:转发至 views.common.qdate_utils.parse_qdate

Deprecated:

新代码应直接从 certflow.views.common.qdate_utils 导入。 本垫片仅为兼容存量调用点保留,在无 PySide6 环境调用会抛 ImportError。

参数:
  • text (str) -- 日期字符串,如 "2026-07-01"

  • fmt (str) -- Qt 日期格式,默认 "yyyy-MM-dd"

返回:

QDate 实例(有效),或 None(解析失败时)

返回类型:

Any | None

certflow.utils.date_utils.normalize_plan_date(date_value)[源代码]

将日期值统一格式化为 YYYY-MM-DD 标准格式(不带时分秒)。

全局统一的日期格式化方法,所有模块导入 plan_date 时均应调用此方法。

支持格式:
  • datetime / pandas.Timestamp 对象

  • 字符串: 2024-01-15 14:30:00, 2024-01-15, 2024/01/15, 2024.01.15, 15-01-2024, 15/01/2024, 20240115, 240115

参数:

date_value (Any) -- 原始日期值,可以是 datetime、Timestamp、字符串或 None

返回:

格式化后的 YYYY-MM-DD 日期字符串,

如果值为空、无效或无法解析,返回 None

返回类型:

str | None

certflow.utils.date_utils.extract_yymm_from_date(plan_date)[源代码]

从计划日期提取 YYMM 格式(后两位年份+两位月份)

先通过 normalize_plan_date 统一格式化为 YYYY-MM-DD, 再从中提取年份后两位和月份。

参数:

plan_date (Any) -- 日期对象或日期字符串(支持任意 normalize_plan_date 支持的格式)

返回:

格式如 "2603" 的 YYMM 字符串,失败返回 None

返回类型:

Optional[str]

certflow.utils.date_utils.extract_yymm_int_from_date(plan_date)[源代码]

从计划日期提取 YYMM 整数格式

参数:

plan_date (Any) -- 日期对象或日期字符串

返回:

如 2603 的整数,失败返回 None

返回类型:

Optional[int]