Tempo Relativo
Locale#relativeTime dovrebbe essere un oggetto contenente le stringhe di sostituzione per dayjs#from.
TIP
Questo richiede il plugin UpdateLocale per funzionare.
dayjs.extend(updateLocale);
dayjs.updateLocale('en', {
relativeTime: {
future: 'tra %s',
past: '%s fa',
s: 'alcuni secondi',
m: 'un minuto',
mm: '%d minuti',
h: "un'ora",
hh: '%d ore',
d: 'un giorno',
dd: '%d giorni',
M: 'un mese',
MM: '%d mesi',
y: 'un anno',
yy: '%d anni',
},
});Locale#relativeTime.future si riferisce al prefisso o suffisso per le date future. Locale#relativeTime.past si riferisce al prefisso o suffisso per le date passate.
Per tutti gli altri casi, un singolo carattere indica il singolare, mentre un doppio carattere indica il plurale.
Elaborazione aggiuntiva dei token
Se un locale richiede un'elaborazione aggiuntiva per un token, è possibile impostare il token come una funzione con la seguente firma, invece di una stringa. La funzione dovrebbe restituire una stringa.
relativeTime: {
...,
yy: function (number, withoutSuffix, key, isFuture) {
return string;
}
}L'argomento number rappresenta il numero di unità per quella chiave. Per m, il numero è il numero di minuti, e così via.
L'argomento withoutSuffix sarà true se il token viene visualizzato senza suffisso, e false se viene visualizzato con suffisso. (La logica è invertita perché il comportamento predefinito è la visualizzazione con il suffisso.)
L'argomento key rappresenta la chiave di sostituzione nell'oggetto Locale#relativeTime (es. s m mm h, ecc.).
L'argomento isFuture sarà true se si utilizzerà il prefisso o suffisso futuro, e false se si utilizzerà il prefisso o suffisso passato.
Soglie e arrotondamento del tempo relativo
È possibile passare un oggetto di configurazione quando si utilizza questo plugin per aggiornare le sue soglie e la configurazione di arrotondamento.
var config = {
thresholds: [{}],
rounding: function
}
dayjs.extend(relativeTime, config)thresholds è un Array di Object che definisce quando un'unità è considerata un minuto, un'ora e così via. Ad esempio, per impostazione predefinita, più di 45 secondi sono considerati un minuto, più di 22 ore sono considerate un giorno e così via. Per modificarli, si può passare un nuovo oggetto thresholds come questo.
// soglie strette
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' },
];È anche possibile aggiungere una propria chiave di soglia e aggiornare le impostazioni locali di conseguenza.
var thresholds = [
...,
{ l: 'ss', r: 59, d: 'second' }
]
dayjs.updateLocale('en', {
relativeTime: {
...,
ss: "%d seconds"
}
})rounding è una Function che elabora il numero prima di passarlo alla stringa di formato relativeTime specificata nelle impostazioni locali. Per modificarla, si può passare una nuova funzione rounding come questa.
// Math.round di default
var rounding = Math.floor;