RelativeTimeFormat + DurationFormat:相对时间 & 时长
两个 API 都把时间跨度转成自然语言。RelativeTimeFormat 把「相对现在多久」说成 昨天 / 3 天后;DurationFormat 把一段绝对时长说成 2 小时 5 分 30 秒。前者关心方向(过去/未来),后者关心拼装多个单位。
1 · RelativeTimeFormat:format(value, unit)
第一参数带正负号:负数是过去、正数是未来。第二参数是单位(year…second)。最关键的开关是 numeric:
**numeric:'auto' 是关键开关。**它在有现成词组时输出 昨天/明天/今年,否则退回 N 天前。numeric:'always'(默认)永远是数字版「1 天前」。要「昨天」必须显式传 { numeric:'auto' }。
**它不负责计算「多久」。**调用方要自己把两个时刻的差换算成 (-1, 'day') 这种「数值 + 单位」传入(选哪个单位、舍入到哪一位也由调用方决定)。Intl 只负责把它表述成对应语言。
2 · DurationFormat:format({ hours, minutes, … })
把一个各单位的对象拼成本地化时长串。style 有四档:long(2 hours)、short(2 hr)、narrow(2h)、digital(2:05:30)。