Relative Zeit
Locale#relativeTime
sollte ein Objekt mit den Ersetzungszeichenfolgen für dayjs#from
sein.
TIP
Dies erfordert das UpdateLocale Plugin, damit es funktioniert.
dayjs.extend(updateLocale);
dayjs.updateLocale('de', {
relativeTime: {
future: 'in %s',
past: 'vor %s',
s: 'ein paar Sekunden',
m: 'eine Minute',
mm: '%d Minuten',
h: 'eine Stunde',
hh: '%d Stunden',
d: 'ein Tag',
dd: '%d Tage',
M: 'ein Monat',
MM: '%d Monate',
y: 'ein Jahr',
yy: '%d Jahre',
},
});
Locale#relativeTime.future
bezieht sich auf das Präfix/Suffix für zukünftige Zeitangaben. Locale#relativeTime.past
bezieht sich auf das Präfix/Suffix für vergangene Zeitangaben.
Für alle anderen gilt: Ein einzelnes Zeichen steht für den Singular, ein doppeltes Zeichen für den Plural.
Zusätzliche Token-Verarbeitung
Wenn eine Sprache eine zusätzliche Verarbeitung für ein Token erfordert, kann sie das Token anstelle einer Zeichenkette als Funktion mit folgender Signatur definieren. Die Funktion sollte eine Zeichenkette zurückgeben.
relativeTime: {
...,
yy: function (number, withoutSuffix, key, isFuture) {
return string;
}
}
Das Argument number
gibt die Anzahl der Einheiten für diesen Schlüssel an. Für m
ist die Zahl die Anzahl der Minuten usw.
Das withoutSuffix
-Argument ist true
, wenn das Token ohne Suffix angezeigt wird, und false
, wenn standardmäßig das Suffix angezeigt wird. (Der Grund für die umgekehrte Logik liegt darin, dass standardmäßig das Suffix angezeigt wird.)
Das key
-Argument bezieht sich auf den Ersetzungsschlüssel im Objekt Locale#relativeTime
(z.B. s m mm h
usw.).
Das isFuture
-Argument ist true
, wenn das zukünftige Suffix/Präfix verwendet werden soll, und false
, wenn das vergangene Präfix/Suffix verwendet werden soll.
Schwellenwerte und Rundung für relative Zeit
Sie können ein Konfigurationsobjekt an dieses Plugin übergeben, um dessen Schwellenwerte und Rundungskonfiguration anzupassen.
var config = {
thresholds: [{}],
rounding: function
}
dayjs.extend(relativeTime, config)
thresholds
ist ein Array
von Object
-Elementen, das definiert, ab wann eine Einheit als Minute, Stunde usw. gilt. Standardmäßig werden beispielsweise mehr als 45 Sekunden als eine Minute betrachtet, mehr als 22 Stunden als ein Tag usw. Um dies zu ändern, können Sie neue thresholds
wie folgt übergeben.
// Strikte Schwellenwerte
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' },
];
Sie können auch eigene Schwellenwertschlüssel hinzufügen und die Sprache entsprechend aktualisieren.
var thresholds = [
...,
{ l: 'ss', r: 59, d: 'second' }
]
dayjs.updateLocale('de', {
relativeTime: {
...,
ss: "%d Sekunden"
}
})
rounding
ist eine Function
zur Verarbeitung der Zahl, bevor sie an die im Gebietsschema angegebene relativeTime
-Formatzeichenkette übergeben wird. Um dies zu ändern, können Sie eine neue rounding
wie folgt übergeben.
// Standardmäßig wird Math.round verwendet
var rounding = Math.floor;