# Convert seconds to HH-MM-SS with JavaScript?

## Convert seconds to HH-MM-SS with JavaScript?

How can I convert seconds to an HH-MM-SS string using JavaScript?

### Solution 1:

Don’t you know datejs? it is a must know.

Using datejs, just write something like:

``````(new Date).clearTime()
.toString('H:mm:ss');
``````

–update

Nowadays date.js is outdated and not maintained, so use “Moment.js“, which is much better as pointed out by T.J. Crowder.

### Solution 2:

You can manage to do this without any external JavaScript library with the help of JavaScript Date method like following:

``````var date = new Date(null);
date.setSeconds(SECONDS); // specify value for SECONDS here
var result = date.toISOString().substr(11, 8);
``````

Or, as per @Frank‘s comment; a one liner:

``````new Date(SECONDS * 1000).toISOString().substr(11, 8);
``````

### Solution 3:

I don’t think any built-in feature of the standard Date object will do this for you in a way that’s more convenient than just doing the math yourself.

``````hours = Math.floor(totalSeconds / 3600);
totalSeconds %= 3600;
minutes = Math.floor(totalSeconds / 60);
seconds = totalSeconds % 60;
``````

Example:

``````let totalSeconds = 28565;
let hours = Math.floor(totalSeconds / 3600);
totalSeconds %= 3600;
let minutes = Math.floor(totalSeconds / 60);
let seconds = totalSeconds % 60;

console.log("hours: " + hours);
console.log("minutes: " + minutes);
console.log("seconds: " + seconds);

// If you want strings with leading zeroes:
console.log(hours + ":" + minutes + ":" + seconds);``````

### Solution 4:

As Cleiton pointed out in his answer, moment.js can be used for this:

``````moment().startOf('day')
.seconds(15457)
.format('H:mm:ss');
``````

### Solution 5:

I know this is kinda old, but…

ES2015:

``````var toHHMMSS = (secs) => {
var sec_num = parseInt(secs, 10)
var hours   = Math.floor(sec_num / 3600)
var minutes = Math.floor(sec_num / 60) % 60
var seconds = sec_num % 60

return [hours,minutes,seconds]
.map(v => v < 10 ? "0" + v : v)
.filter((v,i) => v !== "00" || i > 0)
.join(":")
}
``````

It will output:

``````toHHMMSS(129600) // 36:00:00
toHHMMSS(13545) // 03:45:45
toHHMMSS(180) // 03:00
toHHMMSS(18) // 00:18
``````

### Solution 6:

``````function formatSeconds(seconds)
{
var date = new Date(1970,0,1);
date.setSeconds(seconds);
return date.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "\$1");
}
``````