Relativní čas
Locale#relativeTime by měl být objekt obsahující řetězce, které se použijí pro nahrazení v dayjs#from.
TIP
Pro správnou funkčnost je vyžadován plugin UpdateLocale.
dayjs.extend(updateLocale);
dayjs.updateLocale('en', {
relativeTime: {
future: 'za %s',
past: 'před %s',
s: 'pár sekund',
m: 'minutu',
mm: '%d minut',
h: 'hodinu',
hh: '%d hodin',
d: 'den',
dd: '%d dní',
M: 'měsíc',
MM: '%d měsíců',
y: 'rok',
yy: '%d let',
},
});Locale#relativeTime.future definuje předponu/příponu pro budoucí časové údaje. Locale#relativeTime.past definuje předponu/příponu pro časové údaje v minulosti.
Pro ostatní případy se jeden znak vztahuje na jednotné číslo a dva znaky na množné číslo.
Rozšířené zpracování tokenů
Pokud lokalizace vyžaduje složitější zpracování tokenu, lze token definovat jako funkci s následujícím podpisem namísto řetězce. Funkce musí vracet řetězec.
relativeTime: {
...,
yy: function (number, withoutSuffix, key, isFuture) {
return string;
}
}Argument number představuje počet jednotek pro daný klíč. Například pro m je number počet minut.
Argument withoutSuffix bude true, pokud se token zobrazí bez přípony, a false, pokud se zobrazí s příponou. (Důvodem pro obrácenou logiku je, že výchozí chování je zobrazení s příponou.)
Argument key odkazuje na klíč pro nahrazení v objektu Locale#relativeTime. (např. s, m, mm, h atd.)
Argument isFuture bude true, pokud se použije budoucí přípona/předpona, a false, pokud se použije minulá předpona/přípona.
Hranice a zaokrouhlování relativního času
Při použití tohoto pluginu můžete předat konfigurační objekt pro úpravu prahových hodnot a zaokrouhlování.
var config = {
thresholds: [{}],
rounding: function
}
dayjs.extend(relativeTime, config)thresholds je pole objektů, které definují, kdy se jednotka považuje za minutu, hodinu atd. Například ve výchozím nastavení je více než 45 sekund považováno za minutu, více než 22 hodin je považováno za den atd. Chcete-li toto chování změnit, můžete předat nové hodnoty v poli thresholds následujícím způsobem.
// Striktní prahové hodnoty
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' },
];Můžete také přidat vlastní klíč prahových hodnot a odpovídajícím způsobem aktualizovat lokalizaci.
var thresholds = [
...,
{ l: 'ss', r: 59, d: 'second' }
]
dayjs.updateLocale('en', {
relativeTime: {
...,
ss: "%d seconds"
}
})rounding je funkce pro zpracování čísla před jeho předáním do formátovacího řetězce relativeTime definovaného v lokalizaci. Pro změnu zaokrouhlování můžete předat novou funkci rounding následujícím způsobem.
// Math.round ve výchozím nastavení
var rounding = Math.floor;