S2.01.4Locale-specific first day of week设计
周起始日随地区不同
别名: 每周第一天 · 周历地区化 · firstDay week data
概念解释
地区化周起始日(locale-specific first day of week)是日历视图、星期排序和周编号计算所采用的第一天,它随地区约定及用户覆盖而变化。第一天不一定是周末后的首个工作日,也不能由“周末是哪两天”反推。产品应从 locale 周数据获得默认值,并允许明确的业务规则或用户偏好覆盖。
机制
人们通过列位置快速识别工作日与周末,若网格仍按另一地区排列,日期选择和范围判断更易错。周起始日还与“第一周至少包含几天”的规则共同决定周序号与周所属年份;改变第一天可能让年初日期落入上一年的最后一周。Unicode CLDR 将 firstDay、minDays 和周末范围分别建模,因此只旋转七个列标题而不更新周计算会产生显示与数据不一致。
边界
消费日历的地区默认不应覆盖组织明确采用的 ISO 周、学校课周、排班周期或财务周。第一工作日、第一营业日和日历第一列也可能不同。用户只切换第一列时,事件日期与普通按星期或日期锚定的重复规则不应改变;只有依赖周号、周边界或 iCalendar WKST 的规则需要按明确口径解释。
怎么落地
- 从完整 locale 与用户设置取得第一天。用户
fw覆盖只改变firstDay,周号仍须使用覆盖后的第一天和明确选定的minDays;采用 ISO 或业务周时,应把二者作为一套规则覆盖。 - 将组织业务周作为独立设置并清楚命名,避免把“公司周一开周”误当成用户所在地区的普遍习惯。
- 测试跨年、跨月、周 1、可能的周 53、重复事件和一周范围选择,验证界面与后端分组一致。
- 辅助技术应按视觉顺序朗读列头与日期;切换起始日后保持键盘导航、焦点移动和左右方向与新网格一致。