Temps relatif (Relative Time)
Locale#relativeTime
doit être un objet contenant les chaînes de remplacement pour dayjs#from
.
TIP
Cela requiert l'extension UpdateLocale pour fonctionner.
dayjs.extend(updateLocale);
dayjs.updateLocale('en', {
relativeTime: {
future: 'dans %s',
past: '%s il y a',
s: 'quelques secondes',
m: 'une minute',
mm: '%d minutes',
h: 'une heure',
hh: '%d heures',
d: 'un jour',
dd: '%d jours',
M: 'un mois',
MM: '%d mois',
y: 'un an',
yy: '%d ans',
},
});
Locale#relativeTime.future
fait référence au préfixe/suffixe pour les dates futures. Locale#relativeTime.past
fait référence au préfixe/suffixe pour les dates passées.
Pour tous les autres, un seul caractère fait référence au singulier, et un double caractère fait référence au pluriel.
Traitement additionnel des jetons (Additional token processing)
Si une locale requiert un traitement additionnel pour un jeton, elle peut définir ce dernier comme une fonction avec la signature suivante, au lieu d'une chaîne de caractères. La fonction doit renvoyer une chaîne de caractères.
relativeTime: {
...,
yy: function (number, withoutSuffix, key, isFuture) {
return string;
}
}
L'argument number
représente le nombre d'unités pour cette clé. Pour m
, le nombre est le nombre de minutes, etc.
L'argument withoutSuffix
est true
si le jeton doit être affiché sans suffixe, et false
s'il doit être affiché avec un suffixe. (Cette logique est inversée car le comportement par défaut est d'afficher avec le suffixe.)
L'argument key
représente la clé de remplacement dans l'objet Locale#relativeTime
. (par exemple, s m mm h
, etc.)
L'argument isFuture
est true
s'il faut utiliser le suffixe/préfixe futur et false
s'il faut utiliser le préfixe/suffixe passé.
Seuils et arrondi du temps relatif (Relative Time thresholds and rounding)
Vous pouvez passer un objet de configuration lors de l'utilisation de cette extension pour mettre à jour ses seuils et sa configuration d'arrondi.
var config = {
thresholds: [{}],
rounding: function
}
dayjs.extend(relativeTime, config)
thresholds
est un Array
d'Object
définissant les seuils à partir desquels une unité est considérée comme une minute, une heure, etc. Par exemple, par défaut, plus de 45 secondes sont considérées comme une minute, plus de 22 heures sont considérées comme un jour, etc. Pour modifier ces seuils, vous pouvez passer de nouveaux thresholds
comme ceci.
// seuils précis
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' },
];
Vous pouvez également ajouter votre propre clé de seuils et mettre à jour la locale en conséquence.
var thresholds = [
...,
{ l: 'ss', r: 59, d: 'second' }
]
dayjs.updateLocale('en', {
relativeTime: {
...,
ss: "%d seconds"
}
})
rounding
est une Function
permettant de traiter le nombre avant de l'intégrer à la chaîne de format relativeTime
spécifiée dans la locale. Math.round
est utilisé par défaut. Pour modifier ce comportement, vous pouvez passer une nouvelle fonction rounding
comme ceci.
// Math.round par défaut
var rounding = Math.floor;