相对时间
Locale#relativeTime
应该是一个用于替换 dayjs#from
的字符串对象的集合。
这需要 UpdateLocale
插件才能正常工作。
dayjs.extend(updateLocale)
dayjs.updateLocale('en', {
relativeTime: {
future: "in %s",
past: "%s ago",
s: 'a few seconds',
m: "a minute",
mm: "%d minutes",
h: "an hour",
hh: "%d hours",
d: "a day",
dd: "%d days",
M: "a month",
MM: "%d months",
y: "a year",
yy: "%d years"
}
})
Locale#relativeTime.future
指的是未来日期的前缀/后缀。Locale#relativeTime.past
指的是过去日期的前缀/后缀。
对于所有其他情况,单个字符表示单数,双字符表示复数。
其他标记处理
如果某个语言环境需要对标记进行额外的处理,它可以将标记设置为具有以下签名的函数,而不是字符串。该函数应该返回一个字符串。
relativeTime: {
...,
yy: function (number, withoutSuffix, key, isFuture) {
return string;
}
}
number
参数指的是该键的单位数量。对于 m
,数字指的是分钟数,依此类推。
withoutSuffix
参数如果标记将不带后缀显示,则为 true,如果标记将带后缀显示,则为 false。(逻辑反转的原因是默认行为是带后缀显示。)
key
参数指的是 Locale#relativeTime
对象中的替换键。(例如:s m mm h
等。)
isFuture
参数如果将使用未来后缀/前缀则为真,如果将使用过去前缀/后缀则为假。
相对时间阈值和舍入
使用此插件时,您可以传递一个配置对象来更新其阈值和舍入配置。
var config = {
thresholds: [{}],
rounding: function
}
dayjs.extend(relativeTime, config)
thresholds
是一个 Array
,其中包含 Object
,用于定义何时将一个单位视为一分钟、一小时等。例如,默认情况下,超过 45 秒被视为一分钟,超过 22 小时被视为一天,等等。要更改这些,您可以传递一个新的 thresholds
,如下所示。
// strict thresholds
var thresholds = [
{ l: 's', r: 1 },
{ l: 'm', r: 1 },
{ l: 'mm', r: 59, d: 'minute' },
{ l: 'h', r: 1 },
{ l: 'hh', r: 23, d: 'hour' },
{ l: 'd', r: 1 },
{ l: 'dd', r: 29, d: 'day' },
{ l: 'M', r: 1 },
{ l: 'MM', r: 11, d: 'month' },
{ l: 'y', r: 1 },
{ l: 'yy', d: 'year' }
]
您也可以添加自己的阈值键并相应地更新语言环境。
var thresholds = [
...,
{ l: 'ss', r: 59, d: 'second' }
]
dayjs.updateLocale('en', {
relativeTime: {
...,
ss: "%d seconds"
}
})
rounding
是一个 Function
,用于在将数字提供给语言环境中指定的相对时间格式字符串之前对其进行处理。要更改这些,您可以传递一个新的 rounding
,如下所示。
// Math.round by default
var rounding = Math.floor