Files
30-seconds-of-code/snippets/formatSeconds.md
Chalarangelo 508084a1fd Fix typos
2022-09-04 12:33:59 +03:00

1.0 KiB

title, tags, expertise, cover, firstSeen, lastUpdated
title tags expertise cover firstSeen lastUpdated
Number of seconds to ISO format date,math,string intermediate blog_images/rocky-mountains.jpg 2021-05-09T12:44:55+03:00 2021-10-13T19:29:39+02:00

Returns the ISO format of the given number of seconds.

  • Divide s with the appropriate values to obtain the appropriate values for hour, minute and second.
  • Store the sign in a variable to prepend it to the result.
  • Use Array.prototype.map() in combination with Math.floor() and String.prototype.padStart() to stringify and format each segment.
  • Use Array.prototype.join() to combine the values into a string.
const formatSeconds = s => {
  const [hour, minute, second, sign] =
    s > 0
      ? [s / 3600, (s / 60) % 60, s % 60, '']
      : [-s / 3600, (-s / 60) % 60, -s % 60, '-'];

  return (
    sign +
    [hour, minute, second]
      .map(v => `${Math.floor(v)}`.padStart(2, '0'))
      .join(':')
  );
};
formatSeconds(200); // '00:03:20'
formatSeconds(-200); // '-00:03:20'
formatSeconds(99999); // '27:46:39'