JianFeeeee
13e8671d03
跨端: feat(P6): 表头与网格共用同一个 startOfWeek;"今天"的调用侧入可跑判据;禁用 toISOString 取日期键
pi 2026-09-14 两条,都赶在页面骨架之前定下来。
1. **唯一分叉点必须同时喂两处**:整月网格有两个地方依赖"周从哪天开始" ——
空格数(`leadingBlanks`)**与表头第一格**。表头若在页面里硬编码,就是**第二个分叉**:
格子全对、**表头整体错一列**,而原有 6 条判据一条都不会红(它们只看网格)。
新增 `weekdayLabels(startOfWeek)`(顺序只从这一个参数出)+ **交叉核对判据**:
把"1 号落在第几列"与"那一列的表头字"对上(6 个月份 × 2 种起始)。
2. **"今天"的调用侧**:`today` 入参化让纯逻辑侧干净了,代价是**唯一还能错的地方搬到了调用侧**
—— 而它正好是纯逻辑判据够不着的。`toISOString()` 是 UTC 口径:UTC+8 的清晨会给**昨天**,
"今天"就标到上一格,且在本机跑 UTC 的环境里**永远测不出来**。
新增 `isoOfLocal(now)`(本地年月日手工补零)+ `isoAtOffset(now, 分钟)`(与前者同源但不依赖进程时区,
好让三种偏移**可以真跑**)。判据钉住:UTC+8 / UTC-7 / UTC 三种偏移的日期、
**两种取法在 UTC+8 清晨必须不同**(把陷阱本身钉死)、以及本机两条取法自洽。
3. 附带一条**未来时**的判据:鸿蒙树里不许出现 `toISOString().slice(0,10)` 取日期键
(登记值 0 ⇒ 页面骨架写错时立刻红,报错写"正确修法 = isoOfLocal"与"最常见的错误修法 = 改期望值")。
它第一次跑就抓到了 `model/Calendar.ts` 里**解释这个陷阱的注释** —— 所以改扫 `code()`
(去注释后的代码):规则管代码,注释是文档。
2026-09-14 17:43:09 +08:00
..
2026-09-14 15:41:52 +08:00
2026-09-14 16:21:27 +08:00
2026-09-14 16:51:31 +08:00
2026-09-14 16:21:27 +08:00
2026-09-14 16:59:16 +08:00
2026-09-14 17:35:53 +08:00
2026-09-14 17:33:05 +08:00
2026-09-14 17:22:19 +08:00
2026-09-14 16:35:40 +08:00
2026-09-14 17:36:02 +08:00
2026-09-14 16:21:27 +08:00
2026-09-14 17:39:47 +08:00
2026-09-14 17:20:18 +08:00
2026-09-14 17:43:09 +08:00
2026-09-14 16:21:27 +08:00
2026-09-14 16:21:27 +08:00
2026-09-14 17:17:37 +08:00
2026-09-14 16:21:27 +08:00
2026-09-14 15:11:47 +08:00
2026-09-14 16:51:31 +08:00
2026-09-14 16:21:27 +08:00
2026-09-14 17:33:05 +08:00
2026-09-14 17:43:09 +08:00
2026-09-14 16:21:27 +08:00