Building on working with dates, here’s a bit of code that I came across that I thought was interesting and useful.

This builds on the Working with Dates in JavaScript post that I wrote previously, but this doesn’t use the JavaScript Date object. It does, however, use milliseconds as it’s base unit of time and is a handy tool if you ever have to work with milliseconds.

```
function millisecondsToHuman(ms) {
const seconds = Math.floor((ms / 1000) % 60);
const minutes = Math.floor((ms / 1000 / 60) % 60);
const hours = Math.floor(ms / 1000 / 60 / 60);
const humanized = [
pad(hours.toString(), 2),
pad(minutes.toString(), 2),
pad(seconds.toString(), 2),
].join(':');
return humanized;
}
function pad(numberString, size) {
let padded = numberString;
while (padded.length < size) padded = `0${padded}`;
return padded;
}
millisecondsToHuman(21600000) // '06:00:00' six hours
millisecondsToHuman(86400000) // '24:00:00' hours or one day
millisecondsToHuman(172800000) // '48:00:00' forty eight hours
```

What’s going on here? The first function, `millisecondsToHuman`

is responsible for parsing out the seconds, minutes and hours of a given amount of milliseconds we pass into the function. The constants `seconds`

, `minutes`

and `hours`

are all variables set by dividing the provided milliseconds (`ms`

) into different units by using the appropriate arithmetic to determine each number. `Math.floor`

is used to round each number down to the nearest integer. The const `humanized`

then is set to an array that consists of the numbers `seconds`

, `minutes`

and `hours`

constants converted to strings and padded with a zero where needed by the second function, `pad`

.

`pad`

is applied to each number in the `humanized`

array. It takes two arguments, a string `numberString`

and a number `size`

. JavaScript’s `toString()`

method is applied to each number passed into `pad`

and then `pad`

will take `numberStrings`

and convert them to a two digit timer format, e.g. if `6`

is passed in, it will return `06`

or “pad” it with a zero. Two digit numbers like `10`

are unaltered. `pad`

can only handle numbers two digits long or less, and that’s all it will see because it’s being used exclusively by `millisecondsToHuman`

for the `humanized`

array.

I found this function in the book Fullstack React The Complete Guide to ReactJS and Friends. You should check it out if you’re interested in learning more about how to build a website with React.