fix: 简道云日期字段转为ISO 8601格式上传

This commit is contained in:
ztb-system
2026-03-03 17:49:23 +08:00
parent e8c901b273
commit 233d41a833

View File

@@ -22,6 +22,9 @@ class JiandaoyunUploader:
# 需要转换为数字的字段
NUMERIC_FIELDS = {"最高限价", "最高投标限价", "预估金额", "招标估算金额"}
# 需要转换为日期的字段
DATE_FIELDS = {"发布时间", "项目发布时间", "投标截止日", "招标时间"}
def __init__(self, api_key: str = None):
self.api_key = api_key or JDY_CONFIG["api_key"]
self.headers = {
@@ -116,10 +119,30 @@ class JiandaoyunUploader:
num = self._parse_price(value)
if num is not None:
jdy_data[jdy_field] = {"value": num}
elif local_field in self.DATE_FIELDS:
iso_date = self._to_iso8601(value)
if iso_date:
jdy_data[jdy_field] = {"value": iso_date}
else:
jdy_data[jdy_field] = {"value": value}
return jdy_data
@staticmethod
def _to_iso8601(date_str: str) -> str:
"""将日期字符串转为 ISO 8601 格式(北京时间 UTC+8"""
if not date_str or date_str in ("文档未提及", "详见公告"):
return ""
s = str(date_str).strip()
from datetime import datetime as _dt
for fmt in ("%Y-%m-%d %H:%M:%S", "%Y-%m-%d %H:%M", "%Y-%m-%d"):
try:
dt = _dt.strptime(s, fmt)
return dt.strftime("%Y-%m-%dT%H:%M:%S") + "+08:00"
except ValueError:
continue
# 无法解析,原样返回
return s
@staticmethod
def _parse_price(price_str) -> int | None:
"""将价格字符串转为纯数字(元)"""