E2.14.2midnight-spanning interval设计

跨零点的时段需明确归属

别名: 跨夜时段 · overnight range · 24点归属

概念解释

「22:00–02:00」是跨过午夜的一段时间。人会问:这是今天夜里到明天凌晨,还是填反了?2:00 算结束日的凌晨还是开始日的下午?跨零点时段的归属(midnight-spanning interval)要求把这段时间钉在明确的日期上,并在界面上写出来。它管的是夜的两边属于哪一天,不是一档多少分钟,也不是 12 小时制的上午下午。

机制

一天被画成 0 到 24 的圆环,时段却是线性的。结束钟点小于开始钟点时,系统必须决定是「加一天」还是「用户填反了」。两者在数字上长得一样。夜班、航班、住宿的「含今夜」规则还不一样:酒店的一夜通常不含退房日的白天,夜班可能含次日 8 点。若不把日期写在钟点旁边,人用同一套数字在心里补不同的日历。零点本身也有歧义:24:00 是当天结束还是次日 00:00,同一瞬间两个标签。归属失败的典型后果是少算一天或订到反了的班次。

边界

完全落在同一日历日里的时段没有跨零点问题,硬加日期是噪声。全天事件(all-day)不走钟点,跨日用日期范围表达,不要再套 00:00–24:00 的钟点模型。时区切换时「当地午夜」会移动,跨零点要标明是哪一个当地日。循环班次(每周五 22:00 到周六 6:00)的归属是星期规则,单次日期控件不够用。

怎么落地

  • 当结束钟点早于开始钟点时,显式标出结束属于次日,例如「22:00 → 次日 02:00」,不要只显示两个钟点。
  • 在提交前用自然语言重述区间(「今夜 10 点到明早 2 点,共 4 小时」),让归属被听见。
  • 区分「填反了」与「合法跨夜」:提供「跨夜」确认,而不是一律报错结束必须晚于开始。
  • 验证:订一个跨夜班或跨夜住宿,问结束发生在哪一天、一共几个小时。答错或要心算日期,归属就还没写在界面上。再试 00:00 与 24:00 是否被当成同一瞬间。

延伸

  • 同组E2.14.1 时间粒度应与业务需要一致 · E2.14.3 十二小时制需明确上下午
  • 相邻E2.13 日期选择器 · E2.19 货币、单位与量纲输入
  • 站内检索midnight-spanning interval · overnight range · end before start

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/E2.14.2