Crear formato de tiempo legible para humanos

JavaScriptJavaScriptBeginner
Practicar Ahora

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

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript(("JavaScript")) -.-> javascript/AdvancedConceptsGroup(["Advanced Concepts"]) javascript/BasicConceptsGroup -.-> javascript/variables("Variables") javascript/BasicConceptsGroup -.-> javascript/data_types("Data Types") javascript/BasicConceptsGroup -.-> javascript/arith_ops("Arithmetic Operators") javascript/BasicConceptsGroup -.-> javascript/comp_ops("Comparison Operators") javascript/BasicConceptsGroup -.-> javascript/cond_stmts("Conditional Statements") javascript/BasicConceptsGroup -.-> javascript/array_methods("Array Methods") javascript/AdvancedConceptsGroup -.-> javascript/higher_funcs("Higher-Order Functions") javascript/AdvancedConceptsGroup -.-> javascript/template_lit("Template Literals") subgraph Lab Skills javascript/variables -.-> lab-28316{{"Crear formato de tiempo legible para humanos"}} javascript/data_types -.-> lab-28316{{"Crear formato de tiempo legible para humanos"}} javascript/arith_ops -.-> lab-28316{{"Crear formato de tiempo legible para humanos"}} javascript/comp_ops -.-> lab-28316{{"Crear formato de tiempo legible para humanos"}} javascript/cond_stmts -.-> lab-28316{{"Crear formato de tiempo legible para humanos"}} javascript/array_methods -.-> lab-28316{{"Crear formato de tiempo legible para humanos"}} javascript/higher_funcs -.-> lab-28316{{"Crear formato de tiempo legible para humanos"}} javascript/template_lit -.-> lab-28316{{"Crear formato de tiempo legible para humanos"}} end

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.