Czas względny
Locale#relativeTime
powinien być obiektem zawierającym ciągi znaków, które będą używane zamiast domyślnych wartości w dayjs#from
.
TIP
Aby ta funkcjonalność działała, wymagana jest wtyczka UpdateLocale.
dayjs.extend(updateLocale);
dayjs.updateLocale('en', {
relativeTime: {
future: 'za %s',
past: '%s temu',
s: 'kilka sekund',
m: 'minutę',
mm: '%d minut',
h: 'godzinę',
hh: '%d godzin',
d: 'dzień',
dd: '%d dni',
M: 'miesiąc',
MM: '%d miesięcy',
y: 'rok',
yy: '%d lat',
},
});
Locale#relativeTime.future
określa przedrostek/przyrostek dla dat w przyszłości. Locale#relativeTime.past
określa przedrostek/przyrostek dla dat w przeszłości.
Dla pozostałych kluczy, pojedynczy znak odnosi się do liczby pojedynczej, a podwójny znak do liczby mnogiej.
Dodatkowe przetwarzanie tokenów
Jeśli specyfika danego języka wymaga dodatkowego przetworzenia tokenu, można zdefiniować token jako funkcję o następującej sygnaturze, zamiast ciągu znaków. Funkcja ta powinna zwracać ciąg znaków.
relativeTime: {
...,
yy: function (number, withoutSuffix, key, isFuture) {
return string;
}
}
Argument number
reprezentuje liczbę jednostek dla danego klucza. Na przykład, dla m
jest to liczba minut.
Argument withoutSuffix
przyjmuje wartość true
, jeśli token jest wyświetlany bez przyrostka, a false
, jeśli z przyrostkiem. (Logika jest odwrócona, ponieważ domyślnie wyświetlane są wartości z przyrostkiem).
Argument key
reprezentuje klucz w obiekcie Locale#relativeTime
(np. s
, m
, mm
, h
itp.).
Argument isFuture
przyjmuje wartość true
, jeśli ma być używany przedrostek/przyrostek dla przyszłości, a false
, jeśli dla przeszłości.
Progi i zaokrąglanie czasu względnego
Podczas korzystania z tej wtyczki, można przekazać obiekt konfiguracyjny, aby dostosować progi i sposób zaokrąglania.
var config = {
thresholds: [{}],
rounding: function
}
dayjs.extend(relativeTime, config)
thresholds
to tablica obiektów, która definiuje, kiedy dana jednostka czasu jest uznawana za minutę, godzinę, itd. Domyślnie, na przykład, więcej niż 45 sekund jest uznawane za minutę, a więcej niż 22 godziny za dzień. Aby to zmienić, można przekazać nową tablicę thresholds
w następujący sposób.
// Ścisłe progi
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' },
];
Można również dodać własny klucz progów i zaktualizować ustawienia regionalne.
var thresholds = [
...,
{ l: 'ss', r: 59, d: 'second' }
]
dayjs.updateLocale('en', {
relativeTime: {
...,
ss: "%d seconds"
}
})
rounding
to funkcja, która przetwarza liczbę przed przekazaniem jej do ciągu formatu relativeTime
zdefiniowanego w ustawieniach regionalnych. Aby to zmienić, można przekazać nową funkcję rounding
w następujący sposób.
// Domyślnie Math.round
var rounding = Math.floor;