-3

I want to convert seconds to minutes and seconds in the format MM:SS . The below code is working fine but converting seconds to M:SS format. How can I change it to MM:SS format.

For example, when passing 150 seconds to format(150) giving 2:30 but i need it like 02:30

 function format(time) {   
        // Hours, minutes and seconds
        var hrs = ~~(time / 3600);
        var mins = ~~((time % 3600) / 60);
        var secs = ~~time % 60;
    
        // Output like "1:01" or "4:03:59" or "123:03:59"
        var ret = "";
        if (hrs > 0) {
            ret += "" + hrs + ":" + (mins < 10 ? "0" : "");
        }
        ret += "" + mins + ":" + (secs < 10 ? "0" : "");
        ret += "" + secs;
        return ret;
    }
Owais Ahmed
  • 1,364
  • 1
  • 30
  • 62
  • How does `time` in `format(time)` looks like ? Are you passing seconds or minutes ? – Always Helping Sep 29 '20 at 04:16
  • i am passing seconds – Owais Ahmed Sep 29 '20 at 04:17
  • thanks for confirming - you can simply do another ternary operator to add zero if `minutes are > 0` - like this => `ret += "" + (mins > 0 ? '0'+mins : mins) + ":" + (secs < 10 ? "0" : "");` – Always Helping Sep 29 '20 at 04:22
  • 1
    This question will help in details as well [JavaScript seconds to time string with format hh:mm:ss](https://stackoverflow.com/questions/6312993/javascript-seconds-to-time-string-with-format-hhmmss) for other possible options you want to choose. – Always Helping Sep 29 '20 at 04:25

3 Answers3

2

You could use padStart for min

ret += "" + String(mins).padStart(2, '0') + ":" + (secs < 10 ? "0" : "");

function format(time) {
  // Hours, minutes and seconds
  var hrs = ~~(time / 3600);
  var mins = ~~((time % 3600) / 60);
  var secs = ~~time % 60;

  // Output like "1:01" or "4:03:59" or "123:03:59"
  var ret = "";
  if (hrs > 0) {
      ret += "" + hrs + ":" + (mins < 10 ? "0" : "");
  }
  ret += "" + String(mins).padStart(2, '0') + ":" + (secs < 10 ? "0" : "");
  ret += "" + secs;
  return ret;
}

console.log(format(150))
hgb123
  • 13,869
  • 3
  • 20
  • 38
1

You can use this

ret = (hrs>0?("" + hrs + ":"):"") + (mins < 10 ? "0"+mins : mins) + ":" + (secs < 10 ? "0"+secs : secs);
Shubham Srivastava
  • 1,807
  • 1
  • 10
  • 17
1

Let try:

ret = (hrs ? hrs + ":" : '') + ("0" + mins).slice(-2) + ":" + ("0" + secs).slice(-2)

Goodluck :D

Hung.LK
  • 86
  • 5