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;