S2.01.4Locale-specific first day of week设计

周起始日随地区不同

别名: 每周第一天 · 周历地区化 · firstDay week data

概念解释

地区化周起始日(locale-specific first day of week)是日历视图、星期排序和周编号计算所采用的第一天,它随地区约定及用户覆盖而变化。第一天不一定是周末后的首个工作日,也不能由“周末是哪两天”反推。产品应从 locale 周数据获得默认值,并允许明确的业务规则或用户偏好覆盖。

机制

人们通过列位置快速识别工作日与周末,若网格仍按另一地区排列,日期选择和范围判断更易错。周起始日还与“第一周至少包含几天”的规则共同决定周序号与周所属年份;改变第一天可能让年初日期落入上一年的最后一周。Unicode CLDR 将 firstDayminDays 和周末范围分别建模,因此只旋转七个列标题而不更新周计算会产生显示与数据不一致。

边界

消费日历的地区默认不应覆盖组织明确采用的 ISO 周、学校课周、排班周期或财务周。第一工作日、第一营业日和日历第一列也可能不同。用户只切换第一列时,事件日期与普通按星期或日期锚定的重复规则不应改变;只有依赖周号、周边界或 iCalendar WKST 的规则需要按明确口径解释。

怎么落地

  • 从完整 locale 与用户设置取得第一天。用户 fw 覆盖只改变 firstDay,周号仍须使用覆盖后的第一天和明确选定的 minDays;采用 ISO 或业务周时,应把二者作为一套规则覆盖。
  • 将组织业务周作为独立设置并清楚命名,避免把“公司周一开周”误当成用户所在地区的普遍习惯。
  • 测试跨年、跨月、周 1、可能的周 53、重复事件和一周范围选择,验证界面与后端分组一致。
  • 辅助技术应按视觉顺序朗读列头与日期;切换起始日后保持键盘导航、焦点移动和左右方向与新网格一致。

延伸

  • 同组S2.01.1 年月日的顺序随地区不同 · S2.01.2 纯数字日期存在歧义 · S2.01.3 十二小时制与二十四小时制的地区偏好 · S2.01.5 非公历历法的并存显示
  • 相邻S2.06 时区与夏令时 · S2.07 相对时间与时间范围
  • 站内检索CLDR weekData · first day of week · minimum days in first week

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/S2.01.4