Crear formato de tiempo legible para humanos

Beginner

This tutorial is from open-source community. Access the source code

Introducción

En este laboratorio, exploraremos una función llamada formatDuration que nos ayuda a convertir un número dado de milisegundos en un formato legible para humanos. Aprenderemos cómo utilizar operaciones matemáticas para extraer los valores adecuados de días, horas, minutos, segundos y milisegundos. También utilizaremos varios métodos de matriz como filter, map y join para crear una cadena que muestre la duración de manera amigable para el usuario. Al final de este laboratorio, tendrás una comprensión más profunda de cómo manipular y formatear datos relacionados con el tiempo en JavaScript.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 100%. Ha recibido una tasa de reseñas positivas del 100% por parte de los estudiantes.

Formato de duración

Para obtener el formato legible para humanos de un número dado de milisegundos, siga estos pasos:

  1. Abra la Terminal/SSH y escriba node para comenzar a practicar la codificación.
  2. Divida los ms con los valores adecuados para obtener los valores adecuados de día, hora, minuto, segundo y milisegundo.
  3. Utilice Object.entries() con Array.prototype.filter() para conservar solo los valores no nulos.
  4. Cree la cadena para cada valor, pluralizando adecuadamente, utilizando Array.prototype.map().
  5. Combine los valores en una cadena utilizando Array.prototype.join().

Aquí está el código:

const formatDuration = (ms) => {
  if (ms < 0) ms = -ms;
  const time = {
    day: Math.floor(ms / 86400000),
    hour: Math.floor(ms / 3600000) % 24,
    minute: Math.floor(ms / 60000) % 60,
    second: Math.floor(ms / 1000) % 60,
    millisecond: Math.floor(ms) % 1000
  };
  return Object.entries(time)
    .filter((val) => val[1] !== 0)
    .map(([key, val]) => `${val} ${key}${val !== 1 ? "s" : ""}`)
    .join(", ");
};

Aquí hay algunos ejemplos:

formatDuration(1001); // '1 segundo, 1 milisegundo'
formatDuration(34325055574);
// '397 días, 6 horas, 44 minutos, 15 segundos, 574 milisegundos'

Resumen

¡Felicitaciones! Has completado el laboratorio de Formato de Duración. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.