From 87b3a28c0eaa07e9d042b931914772e1639c27ce Mon Sep 17 00:00:00 2001 From: zzlgreat Date: Thu, 25 Dec 2025 10:04:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E6=A0=87=E8=AE=B0=E7=BA=BFbu?= =?UTF-8?q?g=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Charts/Stock/MiniTimelineChart.js | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/components/Charts/Stock/MiniTimelineChart.js b/src/components/Charts/Stock/MiniTimelineChart.js index c9717654..f18d277c 100644 --- a/src/components/Charts/Stock/MiniTimelineChart.js +++ b/src/components/Charts/Stock/MiniTimelineChart.js @@ -202,10 +202,25 @@ const MiniTimelineChart = React.memo(function MiniTimelineChart({ stockCode, eve return h * 60 + m; }; const eventMin = parseMinuteTime(eventMinute); + + // 盘前时间定义:15:00之后(上个交易日收盘后)或09:30之前 + // 盘中时间:09:30 - 15:00 + const marketOpenMin = 9 * 60 + 30; // 09:30 + const marketCloseMin = 15 * 60; // 15:00 + + // 判断事件是否在盘前(上个交易日15:00之后 或 当天09:30之前) + const isPreMarket = eventMin >= marketCloseMin || eventMin < marketOpenMin; + let nearestIdx = 0; - for (let i = 1; i < times.length; i++) { - if (Math.abs(parseMinuteTime(times[i]) - eventMin) < Math.abs(parseMinuteTime(times[nearestIdx]) - eventMin)) { - nearestIdx = i; + if (isPreMarket) { + // 盘前消息:黄线显示在最左侧(开盘位置) + nearestIdx = 0; + } else { + // 盘中消息:找最接近的时间点 + for (let i = 1; i < times.length; i++) { + if (Math.abs(parseMinuteTime(times[i]) - eventMin) < Math.abs(parseMinuteTime(times[nearestIdx]) - eventMin)) { + nearestIdx = i; + } } } eventMarkLineData.push({