Создание человекочитаемого формата времени

Beginner

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

Введение

В этом практическом занятии мы изучим функцию formatDuration, которая помогает нам преобразовать заданное количество миллисекунд в человекочитаемый формат. Мы узнаем, как использовать математические операции для извлечения соответствующих значений для дней, часов, минут, секунд и миллисекунд. Мы также будем использовать различные методы массивов, такие как filter, map и join, чтобы создать строку, которая отображает длительность в удобочитаемом виде. В конце этого практического занятия вы получите более глубокое понимание того, как манипулировать и форматировать данные, связанные с временем, в JavaScript.

Это Guided Lab, который предоставляет пошаговые инструкции, чтобы помочь вам учиться и практиковаться. Внимательно следуйте инструкциям, чтобы выполнить каждый шаг и получить практический опыт. Исторические данные показывают, что это лабораторная работа уровня начальный с процентом завершения 100%. Он получил 100% положительных отзывов от учащихся.

Форматирование длительности

Для получения человекочитаемого формата заданного количества миллисекунд следуйте шагам:

  1. Откройте Терминал/SSH и введите node, чтобы начать практиковаться в написании кода.
  2. Разделите ms на соответствующие значения, чтобы получить соответствующие значения для day, hour, minute, second и millisecond.
  3. Используйте Object.entries() с Array.prototype.filter(), чтобы оставить только ненулевые значения.
  4. Создайте строку для каждого значения, правильно формируя множественное число, используя Array.prototype.map().
  5. Объедините значения в строку, используя Array.prototype.join().

Вот код:

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(", ");
};

Вот несколько примеров:

formatDuration(1001); // '1 second, 1 millisecond'
formatDuration(34325055574);
// '397 days, 6 hours, 44 minutes, 15 seconds, 574 milliseconds'

Резюме

Поздравляем! Вы завершили практическое занятие по Форматированию длительности. Вы можете выполнить больше практических занятий в LabEx, чтобы улучшить свои навыки.