Tiempo Relativo
Locale#relativeTime
debe ser un objeto con las cadenas de reemplazo para dayjs#from
.
TIP
Esto requiere el plugin UpdateLocale para que funcione.
dayjs.extend(updateLocale);
dayjs.updateLocale('en', {
relativeTime: {
future: 'dentro de %s',
past: 'hace %s',
s: 'unos segundos',
m: 'un minuto',
mm: '%d minutos',
h: 'una hora',
hh: '%d horas',
d: 'un día',
dd: '%d días',
M: 'un mes',
MM: '%d meses',
y: 'un año',
yy: '%d años',
},
});
Locale#relativeTime.future
se refiere al prefijo/sufijo para fechas futuras. Locale#relativeTime.past
se refiere al prefijo/sufijo para fechas pasadas.
Para los demás, un solo carácter se refiere a la forma singular, y dos caracteres se refieren a la forma plural.
Procesamiento Adicional de Tokens
Si una configuración regional requiere un procesamiento adicional para un token, puede definir el token como una función con la siguiente firma en lugar de una cadena. La función debe devolver una cadena.
relativeTime: {
...,
yy: function (number, withoutSuffix, key, isFuture) {
return string;
}
}
El argumento number
indica el número de unidades para esa clave. Para m
, el número es el número de minutos, etc.
El argumento withoutSuffix
será verdadero si el token se muestra sin sufijo, y falso si se muestra con sufijo. (La razón de la lógica invertida es porque el comportamiento predeterminado es mostrar con el sufijo).
El argumento key
corresponde a la clave de reemplazo en el objeto Locale#relativeTime
(ej. s m mm h
, etc.).
El argumento isFuture
será verdadero si se usa el sufijo/prefijo futuro, y falso si se usa el prefijo/sufijo pasado.
Umbrales y Redondeo del Tiempo Relativo
Puede pasar un objeto de configuración al usar este plugin para actualizar sus umbrales y la configuración de redondeo.
var config = {
thresholds: [{}],
rounding: function
}
dayjs.extend(relativeTime, config)
thresholds
es un Array
de Object
que define cuándo una unidad se considera un minuto, una hora, etc. Por ejemplo, por defecto, más de 45 segundos se considera como un minuto, más de 22 horas se considera como un día, etc. Para cambiar esto, puede pasar un nuevo thresholds
como este.
// Umbrales estrictos
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' },
];
También puede agregar su propia clave de umbrales y actualizar la configuración regional correspondientemente.
var thresholds = [
...,
{ l: 'ss', r: 59, d: 'second' }
]
dayjs.updateLocale('en', {
relativeTime: {
...,
ss: "%d seconds"
}
})
rounding
es una función que procesa el número antes de pasarlo a la cadena de formato relativeTime
especificada en la configuración regional. Para cambiar esto, puede pasar una nueva función rounding
como esta.
// Math.round por defecto
var rounding = Math.floor;