异常待办时间更改
This commit is contained in:
@@ -353,13 +353,29 @@ class NewExceptionTask:
|
||||
if stop_date:
|
||||
# 解析暂停派发日期
|
||||
parsed_stop_date = None
|
||||
for fmt in date_formats:
|
||||
stop_value = stop_date.get("value") if isinstance(stop_date, dict) else stop_date
|
||||
if isinstance(stop_value, (int, float)):
|
||||
parsed_stop_date = datetime.datetime.fromtimestamp(
|
||||
stop_value / 1000, tz=datetime.timezone.utc
|
||||
).replace(tzinfo=None)
|
||||
elif isinstance(stop_value, str):
|
||||
stop_str = stop_value.strip()
|
||||
iso_candidate = stop_str[:-1] + "+00:00" if stop_str.endswith("Z") else stop_str
|
||||
try:
|
||||
parsed_stop_date = datetime.datetime.strptime(stop_date.strip(), fmt)
|
||||
logger.debug(f"使用格式 {fmt} 成功解析暂停派发日期: {parsed_stop_date}")
|
||||
break
|
||||
iso_dt = datetime.datetime.fromisoformat(iso_candidate)
|
||||
except ValueError:
|
||||
continue
|
||||
iso_dt = None
|
||||
|
||||
if iso_dt is not None:
|
||||
parsed_stop_date = iso_dt.astimezone(datetime.timezone.utc).replace(tzinfo=None) if iso_dt.tzinfo else iso_dt
|
||||
else:
|
||||
for fmt in date_formats:
|
||||
try:
|
||||
parsed_stop_date = datetime.datetime.strptime(stop_str, fmt)
|
||||
logger.debug(f"使用格式 {fmt} 成功解析暂停派发日期: {parsed_stop_date}")
|
||||
break
|
||||
except ValueError:
|
||||
continue
|
||||
|
||||
if parsed_stop_date:
|
||||
# 获取当前UTC时间
|
||||
@@ -380,21 +396,37 @@ class NewExceptionTask:
|
||||
if create_exception == "否":
|
||||
continue
|
||||
# 新增:检查 create_date_str 是否存在且有效
|
||||
if not create_date:
|
||||
create_date_value = create_date.get("value") if isinstance(create_date, dict) else create_date
|
||||
if not create_date_value:
|
||||
logger.warning("上线日期为空,跳过该记录")
|
||||
continue
|
||||
|
||||
parsed_date = None
|
||||
for fmt in date_formats:
|
||||
if isinstance(create_date_value, (int, float)):
|
||||
local_tz = datetime.timezone(datetime.timedelta(hours=8))
|
||||
parsed_date = datetime.datetime.fromtimestamp(create_date_value / 1000, tz=local_tz).date()
|
||||
elif isinstance(create_date_value, str):
|
||||
create_str = create_date_value.strip()
|
||||
iso_candidate = create_str[:-1] + "+00:00" if create_str.endswith("Z") else create_str
|
||||
try:
|
||||
parsed_date = datetime.datetime.strptime(create_date.strip(), fmt).date()
|
||||
logger.debug(f"使用格式 {fmt} 成功解析日期: {parsed_date}")
|
||||
break
|
||||
iso_dt = datetime.datetime.fromisoformat(iso_candidate)
|
||||
except ValueError:
|
||||
continue
|
||||
iso_dt = None
|
||||
|
||||
if iso_dt is not None:
|
||||
local_tz = datetime.timezone(datetime.timedelta(hours=8))
|
||||
parsed_date = iso_dt.date() if iso_dt.tzinfo is None else iso_dt.astimezone(local_tz).date()
|
||||
else:
|
||||
for fmt in date_formats:
|
||||
try:
|
||||
parsed_date = datetime.datetime.strptime(create_str, fmt).date()
|
||||
logger.debug(f"使用格式 {fmt} 成功解析日期: {parsed_date}")
|
||||
break
|
||||
except ValueError:
|
||||
continue
|
||||
|
||||
if parsed_date is None:
|
||||
logger.error(f"无法解析上线日期: '{create_date}',支持的格式: %Y-%m-%d, %Y-%m-%d %H:%M:%S 等")
|
||||
logger.error(f"无法解析上线日期: '{create_date_value}',支持的格式: %Y-%m-%d, %Y-%m-%d %H:%M:%S 等")
|
||||
continue # 解析失败,跳过
|
||||
|
||||
# 使用解析后的日期进行判断
|
||||
|
||||
Reference in New Issue
Block a user