U3.06.4DST and timezone artifacts设计

时区与夏令时会在时间轴上制造重复或缺失的小时

别名: 夏令时伪影 · 时区重复小时

概念解释

时间轴看似连续均匀,钟表时间却有两处人造的裂缝。夏令时切换:春天拨快一小时,那天只有 23 小时——切换时刻的曲线出现断崖;秋天拨回,25 小时的一天让同一钟表时刻出现两次——01:30 到 02:30 的数据被折叠加倍,图上呈尖峰。时区:多区域数据聚合到同一轴时,"各地的 9 点"不是同一时刻,跨区比较的是错位的相位。这些是数据管道层面的真实伪影,画图前不处理,轴上的"异常"会被当成业务事件去解释。

机制

钟表时间是政策产物而非物理量:DST 切换在钟表坐标上制造不连续(春跳)与多值性(秋叠),折线图对两者都敏感——跳变画成断崖,重叠画成双高。按钟表小时聚合的统计(每小时订单数)在切换日天然失真:23 小时的天总量偏低、特定小时翻倍。时区问题的机制是坐标系不统一:UTC 存储的.timestamp 被本地化到不同时区后,日边界("每天"从几点算起)随区漂移,日聚合、周聚合的结果随所选时区改变——同一数据在 UTC 与本地时区的"日活跃"可以差出一段清晨流量。

边界

处理策略按受众定:单一时区受众用本地钟表时间(符合直觉),但 DST 切换日的图必须标注;跨时区受众或技术场景统一 UTC(消除多值与跳变),代价是"本地几点"要读者换算。混合策略(存储 UTC、展示按用户时区本地化、聚合口径声明)是产品默认。DST 无夏令时的地区(如中国)不产生本地伪影,但接全球数据管道时仍会在源数据里遇到。逐小时以下的细粒度对这类伪影最敏感,日级以上基本稀释。

怎么落地

  • 数据层先消毒:存储一律 UTC,DST 切换日打标记(is_dst_shift_day),按钟表小时的聚合在切换日做 23/25 小时归一或剔除声明。
  • 图层标注:切换时刻画垂直参考线并注明"夏令时切换";重复小时的叠加段用阴影提示"两倍计数"。
  • 验证:检查每年两个切换日附近的曲线;无标注却有断崖或尖峰的,先查日历再谈业务解释。

延伸

  • 同组U3.06.1 采样时刻不均匀时按等距排列会扭曲变化速率 · U3.06.2 时间序列的缺口应在轴上留空而非直接跳过 · U3.06.3 月份天数不等,按月等宽的柱状图不可直接比较 · U3.06.5 时间粒度的选择决定哪些周期性可被看见
  • 相邻U3.06.5 时间粒度的选择决定哪些周期性可被看见 · U8.03.1 时区与夏令时造成的数据质量陷阱
  • 站内检索daylight saving time · timezone · UTC normalization · hourly aggregation

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/U3.06.4