I have a count of seconds stored in variable seconds. I want to convert for example 1439 seconds to 23 minutes and 59 seconds. And if the time is greater than 1 hour (for example 9432 seconds), to 2 hours, 37 minutes and 12 seconds.
How can I achieve this?
I'm thinking of:
var sec, min, hour;  if(seconds<3600){     var a = Math.floor(seconds/60); //minutes     var b = seconds%60; //seconds      if (b!=1){         sec = "seconds";     }else{         sec = "second";     }      if(a!=1){         min = "minutes";     }else{         min = "minute";     }      $('span').text("You have played "+a+" "+min+" and "+b+" "+sec+"."); }else{         var a = Math.floor(seconds/3600); //hours     var x = seconds%3600;     var b = Math.floor(x/60); //minutes     var c = seconds%60; //seconds       if (c!=1){         sec = "seconds";     }else{         sec = "second";     }      if(b!=1){         min = "minutes";     }else{         min = "minute";     }      if(c!=1){         hour = "hours";     }else{         hour = "hour";     }      $('span').text("You have played "+a+" "+hour+", "+b+" "+min+" and "+c+" "+sec+"."); }   But that's a lot of code, and it has to be calculated each second. How can I shrink this up?
How to Convert Seconds to Hours. The time in hours is equal to the time in seconds divided by 3,600.
int seconds = (totalSeconds % 60); int minutes = (totalSeconds % 3600) / 60; int hours = (totalSeconds % 86400) / 3600; int days = (totalSeconds % (86400 * 30)) / 86400; First line - We get the remainder of seconds when dividing by number of seconds in a minutes.
I think you would find this solution very helpful.
You modify the display format to fit your needs with something like this -
function secondsToHms(d) {     d = Number(d);     var h = Math.floor(d / 3600);     var m = Math.floor(d % 3600 / 60);     var s = Math.floor(d % 3600 % 60);      var hDisplay = h > 0 ? h + (h == 1 ? " hour, " : " hours, ") : "";     var mDisplay = m > 0 ? m + (m == 1 ? " minute, " : " minutes, ") : "";     var sDisplay = s > 0 ? s + (s == 1 ? " second" : " seconds") : "";     return hDisplay + mDisplay + sDisplay;  } 
                        You can try this, i have used this successfully in the past You should be able to add the minutes and seconds on easily
function secondsToTime(secs) {     var hours = Math.floor(secs / (60 * 60));      var divisor_for_minutes = secs % (60 * 60);     var minutes = Math.floor(divisor_for_minutes / 60);      var divisor_for_seconds = divisor_for_minutes % 60;     var seconds = Math.ceil(divisor_for_seconds);      var obj = {         "h": hours,         "m": minutes,         "s": seconds     };     return obj; }   Fiddle
You can change the object to
var obj = {         "h": hours + " hours",         "m": minutes + " minutes",         "s": seconds + " seconds"     }; 
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With