Tempo Relativo
Locale#relativeTime
deve ser um objeto contendo as strings de substituição para dayjs#from
.
TIP
Isso requer o plugin UpdateLocale para funcionar.
dayjs.extend(updateLocale);
dayjs.updateLocale('en', {
relativeTime: {
future: 'daqui a %s',
past: '%s atrás',
s: 'poucos segundos',
m: 'um minuto',
mm: '%d minutos',
h: 'uma hora',
hh: '%d horas',
d: 'um dia',
dd: '%d dias',
M: 'um mês',
MM: '%d meses',
y: 'um ano',
yy: '%d anos',
},
});
Locale#relativeTime.future
refere-se ao prefixo/sufixo para datas futuras. Locale#relativeTime.past
refere-se ao prefixo/sufixo para datas passadas.
Para todos os outros, um único caractere representa o singular e um caractere duplo se refere ao plural.
Processamento de Token Adicional
Se uma localidade exigir processamento adicional para um token, pode-se definir o token como uma função com a seguinte assinatura, em vez de uma string. A função deve retornar uma string.
relativeTime: {
...,
yy: function (number, withoutSuffix, key, isFuture) {
return string;
}
}
O argumento number
representa a quantidade de unidades para essa chave. Para m
, o número é o número de minutos, etc.
O argumento withoutSuffix
será true
se o token for exibido sem sufixo e false
se for exibido com sufixo. (A lógica é invertida porque o comportamento padrão é exibir com o sufixo.)
O argumento key
refere-se à chave de substituição no objeto Locale#relativeTime
. (por exemplo, s m mm h
, etc.)
O argumento isFuture
será true
se o sufixo/prefixo futuro for utilizado e false
se for usar o prefixo/sufixo passado.
Limiares e Arredondamento de Tempo Relativo
Você pode passar um objeto de configuração ao usar este plugin para atualizar seus limiares e configuração de arredondamento.
var config = {
thresholds: [{}],
rounding: function
}
dayjs.extend(relativeTime, config)
thresholds
é um Array
de Object
definido para quando uma unidade é considerada um minuto, uma hora, etc. Por exemplo, por padrão, mais de 45 segundos é considerado um minuto, mais de 22 horas é considerado um dia e assim por diante. Para mudar isso, você pode passar um novo thresholds
como este.
// 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' },
];
É possível também adicionar suas próprias chaves de limiares e atualizar a localidade de acordo.
var thresholds = [
...,
{ l: 'ss', r: 59, d: 'second' }
]
dayjs.updateLocale('en', {
relativeTime: {
...,
ss: "%d seconds"
}
})
rounding
é uma Function
que processa o número antes de fornecê-lo à string de formatação relativeTime
especificada na localidade. Para alterar isso, você pode passar um novo rounding
como este.
// Math.round by default
var rounding = Math.floor;