Относительное время
Locale#relativeTime
должен быть объектом строк для подстановки в dayjs#from
.
TIP
Для работы этого плагина требуется UpdateLocale.
dayjs.extend(updateLocale);
dayjs.updateLocale('en', {
relativeTime: {
future: 'через %s',
past: '%s назад',
s: 'несколько секунд',
m: 'минуту',
mm: '%d минут',
h: 'час',
hh: '%d часов',
d: 'день',
dd: '%d дней',
M: 'месяц',
MM: '%d месяцев',
y: 'год',
yy: '%d лет',
},
});
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
принимает значение true
, если будет использоваться будущий суффикс/префикс, и false
, если будет использоваться прошлый префикс/суффикс.
Пороги и округление относительного времени
При использовании этого плагина можно передать объект конфигурации для обновления порогов времени и конфигурации округления.
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' },
];
Можно также добавить свой собственный ключ порогов и обновить локаль соответствующим образом.
var thresholds = [
...,
{ l: 'ss', r: 59, d: 'second' }
]
dayjs.updateLocale('en', {
relativeTime: {
...,
ss: "%d seconds"
}
})
rounding
– это функция, которая обрабатывает число перед его передачей в строку формата relativeTime
, указанную в локали. Чтобы изменить функцию округления, можно передать новую функцию rounding
следующим образом.
// по умолчанию Math.round
var rounding = Math.floor;