v1.2.2: Fix overnight session weekday logic (Sunday evening = Monday overnight)

- ET 20:00-24:00: allow Sunday (wd=1) as Monday overnight start
- ET 00:00-04:00: allow Saturday (wd=7) as Friday overnight continuation
- Fixes no data shown on Sunday evening when overnight API has live data

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
vgearen
2026-03-23 08:51:15 +08:00
co-authored by Claude Opus 4.6
parent 80c12aba58
commit d898185745
2 changed files with 18 additions and 13 deletions
+14 -9
View File
@@ -276,23 +276,28 @@ final class AppState: ObservableObject {
cal.timeZone = TimeZone(identifier: "America/New_York")!
let now = Date()
let comps = cal.dateComponents([.weekday, .hour, .minute], from: now)
let weekday = comps.weekday ?? 1
let minutes = (comps.hour ?? 0) * 60 + (comps.minute ?? 0)
switch minutes {
// Swift Calendar weekday: 1=周日, 2=周一, 3=周二, ..., 6=周五, 7=周六
let wd = comps.weekday ?? 1
let t = (comps.hour ?? 0) * 60 + (comps.minute ?? 0)
switch t {
case 0..<240:
guard weekday >= 3, weekday <= 7 else { return nil }
return "夜盘" // ET 00:00–04:00(跨日,周二夜~周六凌晨)
// ET 00:00–04:00 凌晨段(前一晚夜盘延续)
// 周一凌晨(wd=2)=周日夜盘, 周二~周五凌晨(wd=3~6), 周六凌晨(wd=7)=周五夜盘
guard wd >= 2 else { return nil } // 周日凌晨无交易
return "夜盘"
case 240..<570:
guard weekday >= 2, weekday <= 6 else { return nil }
guard wd >= 2, wd <= 6 else { return nil } // 周一~周五
return "盘前" // ET 04:00–09:30
case 570..<960:
guard weekday >= 2, weekday <= 6 else { return nil }
guard wd >= 2, wd <= 6 else { return nil }
return "盘中" // ET 09:30–16:00
case 960..<1200:
guard weekday >= 2, weekday <= 6 else { return nil }
guard wd >= 2, wd <= 6 else { return nil }
return "盘后" // ET 16:00–20:00
case 1200..<1440:
guard weekday >= 2, weekday <= 6 else { return nil }
// ET 20:00–24:00 晚间段
// 周日晚(wd=1)=周一夜盘开始, 周一~周五晚(wd=2~6)
guard wd >= 1, wd <= 6 else { return nil } // 仅排除周六晚(wd=7)
return "夜盘" // ET 20:00–24:00
default:
return nil