Relatív idő
A Locale#relativeTime
egy objektum, amely a dayjs#from
függvény által használt helyettesítő karaktereket tartalmazza.
TIP
Ehhez az UpdateLocale bővítmény szükséges.
dayjs.extend(updateLocale);
dayjs.updateLocale('en', {
relativeTime: {
future: '%s múlva',
past: '%s ezelőtt',
s: 'néhány másodperc',
m: 'egy perc',
mm: '%d perc',
h: 'egy óra',
hh: '%d óra',
d: 'egy nap',
dd: '%d nap',
M: 'egy hónap',
MM: '%d hónap',
y: 'egy év',
yy: '%d év',
},
});
A Locale#relativeTime.future
a jövőbeli időpontokhoz tartozó előtagot és utótagot definiálja, míg a Locale#relativeTime.past
a múltbeli időpontokhoz tartozó előtagot és utótagot definiálja.
Minden más esetben egy karakter az egyes számot, két karakter pedig a többes számot jelöli.
További token feldolgozás
Ha egy adott locale további feldolgozást igényel egy tokenhez, akkor a string helyett a token egy függvényként adható meg a következő szignatúrával. A függvénynek egy stringet kell visszaadnia.
relativeTime: {
...,
yy: function (number, withoutSuffix, key, isFuture) {
return string;
}
}
A number
argumentum az adott kulcshoz tartozó egységek számát jelöli. Például az m
esetében ez a percek számát jelenti.
A withoutSuffix
argumentum true
értéket vesz fel, ha a tokent utótag nélkül kell megjeleníteni, és false
értéket, ha utótaggal. (Az alapértelmezett viselkedés az utótag használata.)
A key
argumentum a Locale#relativeTime
objektumban lévő helyettesítő kulcsra utal (pl. s
, m
, mm
, h
stb.).
Az isFuture
argumentum true
értéket vesz fel, ha a jövőbeli utótagot/előtagot kell használni, és false
értéket, ha a múltbeli előtagot/utótagot.
Relatív idő küszöbértékek és kerekítés
A bővítmény használatakor egy konfigurációs objektumot adhat át a küszöbértékek és a kerekítési konfiguráció frissítéséhez.
var config = {
thresholds: [{}],
rounding: function
}
dayjs.extend(relativeTime, config)
A thresholds
egy objektumokat tartalmazó tömb, amely meghatározza, hogy egy időtartam mikor minősüljön percnek, órának stb. Például alapértelmezés szerint több mint 45 másodperc percnek, több mint 22 óra pedig napnak számít. Ezeket úgy módosíthatja, hogy egy új thresholds
tömböt ad meg, például:
// Szigorú küszöbértékek
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' },
];
Saját küszöbértékeket is hozzáadhat, és ennek megfelelően frissítheti a locale-t.
var thresholds = [
...,
{ l: 'ss', r: 59, d: 'second' }
]
dayjs.updateLocale('en', {
relativeTime: {
...,
ss: "%d seconds"
}
})
A rounding
egy Function
, amely a számot feldolgozza, mielőtt azt a locale-ban megadott relativeTime
formátumú stringnek átadná. Ezeket úgy módosíthatja, hogy egy új rounding
függvényt ad át, például:
// Alapértelmezettként Math.round
var rounding = Math.floor;