Files
30-seconds-of-code/javascript/snippets/format-seconds.md
2023-05-01 22:35:56 +03:00

37 lines
1013 B
Markdown

---
title: Number of seconds to ISO format
type: snippet
tags: [date,math,string]
cover: rocky-mountains
dateModified: 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.
```js
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(':')
);
};
```
```js
formatSeconds(200); // '00:03:20'
formatSeconds(-200); // '-00:03:20'
formatSeconds(99999); // '27:46:39'
```