跳转到内容

Timestamp 时间戳

把一个时刻渲染成文本,绝对或相对。

用法

渲染为 <time datetime>:文本供人阅读,datetime 供机器读取,两者取自同一个墙钟

组件结构

加粗的是必需部件。

data-scope="timestamp"root

示例

呈现方式

date 只到日、datetime 到秒、relative 表述为几分钟前等相对说法;datetime 属性的精度随之变化

datedatetimerelative

自定义格式串

记号是 YYYY / YY / MM / M / DD / D / HH / H / mm / m / ss / s,只改变看到的文本,datetime 不随之变化

YYYY-MM-DD HH:mm:ss
YYYY 年 M 月 D 日
M/D H:mm
YY.MM.DD

相对时间

just now / n minutes ago 四档,超过三十天退回绝对日期;locale 只更换用词,未提供时跟随浏览器语言

设计指引

何时使用

  • 展示创建时间、更新时间、事件发生时刻。
  • 需要“n 分钟前”等相对表述。

何时不用

特性

  • type 切换绝对与相对;相对分四档(分 / 小时 / 天),超过三十天退回绝对日期。
  • format 自定义格式串,只改变显示文本,datetime 属性不变。
  • locale 只切换用词与默认格式串:zh 开头使用中文,其余英文。未提供时跟随宿主浏览器语言,读取失败时使用 en-US

组合

最佳实践

  • 相对时间旁给出绝对时间(提示或 title),“3 天前”在追查问题时不够用。
  • 时区要明确:跨时区团队中“昨天”是含糊的说法。

反模式

  • 只给相对时间且无法看到确切时刻。
  • 对很久以前的事仍用相对表述(“427 天前”)。

API 参考

产物

自定义元素<xh-timestamp>
Vue 组件XhTimestamp
状态机无,connect 直接由 props 算属性
皮肤@xihan-ui/styles/timestamp.css

Props

属性类型必填说明
formatstring自定义格式串,记号为 YYYY / YY / MM / M / DD / D / HH / H / mm / m / ss / s。 提供后覆盖该 locale 的默认格式串;relative 型下只在回退为绝对日期时使用。
localestringBCP 47 语言标记,决定用词与默认格式串:zh 开头使用中文,其余一律英文。 未提供时按宿主语言,宿主也没有时按 en-US。它只切换面向用户的文本,datetime 恒为同一种写法。
nowTimestampValue计算相对表述时的参照时刻,默认取当前时刻。提供后整个组件的产出完全由入参决定。
typeTimestampType呈现方式:date 只到日、datetime 到秒、relative 表述为「几分钟前」,默认 datetime。
valueTimestampValue要显示的时刻。只写年月日的串按本地零点解读。

状态

公开状态写入 data-state

部件取值
root'empty'

connect API

getXxxProps() 返回对应部件的宿主属性。

成员类型说明
dateDate | undefined解析出的时刻;未提供或无法识别时为 undefined。
textstring面向用户的文本;没有可读时刻时为空串。
stampstring | undefined写入 datetime 的时间戳;没有可读时刻时为 undefined,此时根上不写该属性。
stateTimestampState当前状态。
relativeboolean本次是否实际按相对表述朗读。落在四档之外回退为绝对日期时为 false。
getRootProps() => T['element']

无障碍

键盘

规格出处:W3C APG

无键盘交互(不接收焦点,或焦点行为完全由原生元素提供)。

样式参考

皮肤

@xihan-ui/styles/timestamp.css 使用 [data-scope="timestamp"][data-part="root"] 部件选择器,位于 xihan.components 层。覆盖样式使用 xihan.overrides

数据属性

connect 生成;条件不成立时不输出无值属性。

部件属性
rootdata-formatprops.type
rootdata-relative''(条件成立时才出现)
rootdata-state'empty'

CSS 变量

本组件公开覆盖槽由独立皮肤的实际消费位生成;默认来源、作用部件和状态均与 CSS 同源。

变量部件CSS 属性状态默认来源说明
--xh-timestamp-fgrootcolordefault--xh-fg-defaulttimestamp 的 root 部件 color 覆盖槽。
--xh-timestamp-placeholder-fgrootcolorstate=empty
state=invalid
--xh-fg-mutedtimestamp 的 root 部件 color 覆盖槽。

动效

colortransition 过渡。时长与缓动读动效令牌,改令牌即改全局节奏。

系统开启减弱动效时由令牌层统一收敛,皮肤不另作判断。

Released under The MIT License