From 9331ba64d6de88bf7c29587ce67e55d998369c2a Mon Sep 17 00:00:00 2001 From: jiangyuqing Date: Wed, 14 May 2025 12:51:02 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E6=97=B6=E9=97=B4=E8=A7=A3=E6=9E=90?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helper/message.py | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/app/helper/message.py b/app/helper/message.py index 8822e5fc..43d6cc38 100644 --- a/app/helper/message.py +++ b/app/helper/message.py @@ -571,6 +571,7 @@ class MessageQueueManager(metaclass=SingletonClass): def _parse_schedule(periods: Union[list, dict]) -> List[tuple[int, int, int, int]]: """ 将字符串时间格式转换为分钟数元组 + 支持格式为 'HH:MM' 或 'HH:MM:SS' 的时间字符串 """ parsed = [] if not periods: @@ -582,9 +583,31 @@ class MessageQueueManager(metaclass=SingletonClass): continue if not period.get('start') or not period.get('end'): continue - start_h, start_m = map(int, period['start'].split(':')) - end_h, end_m = map(int, period['end'].split(':')) - parsed.append((start_h, start_m, end_h, end_m)) + try: + # 处理 start 时间 + start_parts = period['start'].split(':') + if len(start_parts) == 2: + start_h, start_m = map(int, start_parts) + elif len(start_parts) >= 3: + start_h, start_m = map(int, start_parts[:2]) # 只取前两个部分 (HH:MM) + else: + continue + # 处理 end 时间 + end_parts = period['end'].split(':') + if len(end_parts) == 2: + end_h, end_m = map(int, end_parts) + elif len(end_parts) >= 3: + end_h, end_m = map(int, end_parts[:2]) # 只取前两个部分 (HH:MM) + else: + continue + + parsed.append((start_h, start_m, end_h, end_m)) + except ValueError as e: + logger.error(f"解析时间周期时出现错误:{period}. 错误:{str(e)}. 跳过此周期。") + continue + except Exception as e: + logger.error(f"解析时间周期时出现意外错误:{period}. 错误:{str(e)}. 跳过此周期。") + continue return parsed @staticmethod