Относительное время
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
будет иметь истинное значение, если токен будет отображен без суффикса, и ложным, если наоборот (с суффиксом). (Причина инвертированной логики заключается в том, что поведение по умолчанию отображается с суффиксом.)
Аргумент key
ссылается на ключ замены в объекте Locale#relativeTime
. (например, s m mm h
, и т.д.)
Аргумент isFuture
будет обладать истинным значением, если он будет использовать суффикс/префикс для будущих времен и ложным - для прошедших.
Пороговые значения и округления относительного времени
Вы можете передавать объект с конфигурацией, пока используется этот плагин, для обновления его пороговых значений и округления.
var config = {
thresholds: [{}],
rounding: function
}
dayjs.extend(relativeTime, config)
thresholds
представляет собой массив
объектов
, определенный в тот момент, когда единица измерения рассматривается в качестве минуты, часа и так далее. Например, по умолчанию более 45 секунд считается минутой, более 22 часов считается днем и так далее. Чтобы изменить это, вам нужно передать новое значение в 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' }
]
Вы также можете добавить свой thresholds ключ и обновить локаль соответственно.
var thresholds = [
...,
{ l: 'ss', r: 59, d: 'second' }
]
dayjs.updateLocale('en', {
relativeTime: {
...,
ss: "%d seconds"
}
})
rounding
является Function
для обработки числа перед передачей его в строку формата relativeTime, указанную в локали. Чтобы изменить их, вы можете передать новую rounding
следующим образом.
// Math.round по умолчанию
var rounding = Math.floor