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;