Relative Time
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,该数字是分钟数,以此类推。
如果要不带后缀显示,则传入 without Suffix 参数为 true,如果要带后缀显示,则为 false。 (之所以使用逻辑倒置,是因为默认的行为是显示后缀。)
key 参数代表 Locale#relativeTime对象中的替换键。 (例如 s m mm h 等)
如果要使用未来的后缀/前缀,则 isFuture 参数将会为 true,如果要使用过去的前缀/后缀,则为 false。
Relative Time 的阈值和舍入函数配置
您可以在使用此插件时,通过传入一个配置对象来更新其阈值和舍入函数的配置。
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;
相关内容
- Calendar 使用Day.js的updateLocale方法配置英文日历,定义了不同日期情况下的格式化字符串,如昨天、今天、明天、上周、下周以及其他情况的日期格式。
- 自定义 Day.js 支持自定义语言配置,用户可创建新语言或更新现有语言,需使用 UpdateLocale 插件。配置包括星期、月份等信息。
- Month Abbreviations 使用Day.js的updateLocale方法配置简体中文月份缩写,设置为对应的中文名称。
- Month Names 月份名称在 Day.js 中通过 Locale#months 数组进行定义。用户可以使用 UpdateLocale 插件自定义月份名称。若需要更高级的占位符处理...
- Weekday Abbreviations 使用Day.js的updateLocale方法配置英文星期缩写,设置为对应的缩写形式。
- Minimal Weekday Abbreviations 使用Day.js的updateLocale方法配置英文星期缩写,将缩写设置为两个字母的形式。