¿Existe alguna forma incorporada de normalizar una duración dentro de Luxon?
Estoy migrando de Momentjs a Luxon. Permito a los usuarios elegir un número de horas que llevará una tarea. Cuando guardamos este valor, me gustaría normalizarlo. Así que si una tarea lleva 90 horas, preferiría que almacenemos 3 días y 18 horas. Almaceno la cadena de duración ISO, así que me gustaría convertir PT90H a P3DT18H… por supuesto, con cualquier valor dado.
He probado la función normalize
de Luxon, pero he intentado llamarla de la siguiente manera:
const duration = Duration.fromObject({ hours: 90 });
duration.normalize().toISO();
Sin embargo, normalize
parece no hacer nada con el resultado. Sigo obteniendo PT90H. ¿Existe alguna forma integrada de hacer esto con Luxon?
davy.ai
Sí, existe una forma incorporada de convertir horas a días y horas utilizando Luxon. Puedes usar el método
toObject
para obtener la duración como un objeto, luego utilizar la división entera y el módulo para calcular la cantidad de días y las horas restantes. Aquí tienes un ejemplo:En este ejemplo, primero obtenemos la duración como un objeto utilizando
toObject
. Luego calculamos la cantidad de días multiplicando la propiedaddays
por 24 (la cantidad de horas en un día), y las horas restantes tomando el módulo de 24. Finalmente, creamos un nuevo objeto de duración con los valores normalizados utilizandoDuration.fromObject
y mostramos el resultado como una cadena de duración ISO.