diff --git a/snippets/formatSeconds.md b/snippets/formatSeconds.md new file mode 100644 index 000000000..e7d8776a1 --- /dev/null +++ b/snippets/formatSeconds.md @@ -0,0 +1,26 @@ +--- +title: formatSeconds +tags: date,math,string +--- + +Returns the ISO format of the given number of seconds. + +- Divide `s` with the appropriate values to obtain the appropriate values for "HH:mm:ss". +- Use `Array.prototype.map()` to create the string for each value, and pads it to `2` digits. +- Use `String.prototype.join(', ')` to combine the values into a string. + +```js +const formatSeconds = s => { + if (s < 0) s = 0; + + return [s / 3600, s / 60 % 60, s % 60] + .map(v => `${Math.floor(v).toString().padStart(2, '0')}`) + .join(':'); +}; +``` + +```js +formatSeconds(-200); // "00:00:00" +formatSeconds(200); // "00:03:20" +formatSeconds(99999); // "27:46:39" +```