Introdução
Neste laboratório, exploraremos uma função chamada formatDuration que nos ajuda a converter um número dado de milissegundos em um formato legível por humanos. Aprenderemos como usar operações matemáticas para extrair os valores apropriados para dias, horas, minutos, segundos e milissegundos. Também usaremos vários métodos de array como filter, map e join para criar uma string que exibe a duração de uma maneira amigável ao usuário. Ao final deste laboratório, você terá uma compreensão mais profunda de como manipular e formatar dados relacionados ao tempo em JavaScript.
Formatar Duração
Para obter o formato legível por humanos de um determinado número de milissegundos, siga estes passos:
- Abra o Terminal/SSH e digite
nodepara começar a praticar a codificação. - Divida
mscom os valores apropriados para obter os valores apropriados paradia,hora,minuto,segundoemilissegundo. - Use
Object.entries()comArray.prototype.filter()para manter apenas os valores não-nulos. - Crie a string para cada valor, pluralizando apropriadamente, usando
Array.prototype.map(). - Combine os valores em uma string usando
Array.prototype.join().
Aqui está o 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(", ");
};
Aqui estão alguns exemplos:
formatDuration(1001); // '1 second, 1 millisecond'
formatDuration(34325055574);
// '397 days, 6 hours, 44 minutes, 15 seconds, 574 milliseconds'
Resumo
Parabéns! Você concluiu o laboratório Formatar Duração. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.