strftime.js ( strftime github ) es una de las mejores bibliotecas de formato de tiempo. Es extremadamente ligero, 30 KB, y efectivo. Utilizándolo, puede convertir segundos en tiempo fácilmente en una línea de código, confiando principalmente en la clase Date nativa.
Al crear una nueva Fecha, cada argumento opcional es posicional de la siguiente manera:
new Date(year, month, day, hours, minutes, seconds, milliseconds);
Entonces, si inicializa una nueva Fecha con todos los argumentos como cero hasta los segundos, obtendrá:
var seconds = 150;
var date = new Date(0,0,0,0,0,seconds);
=> Sun Dec 31 1899 00:02:30 GMT-0500 (EST)
Puede ver que 150 segundos son 2 minutos y 30 segundos, como se ve en la fecha de creación. Luego, utilizando un formato de tiempo de ejecución ("% M:% S" para "MM: SS"), generará la cadena de minutos.
var mm_ss_str = strftime("%M:%S", date);
=> "02:30"
En una línea, se vería así:
var mm_ss_str = strftime('%M:%S', new Date(0,0,0,0,0,seconds));
=> "02:30"
Además, esto le permitiría un soporte intercambiable HH: MM: SS y MM: SS en función de la cantidad de segundos. Por ejemplo:
# Less than an Hour (seconds < 3600)
var seconds = 2435;
strftime((seconds >= 3600 ? '%H:%M:%S' : '%M:%S'), new Date(0,0,0,0,0,seconds));
=> "40:35"
# More than an Hour (seconds >= 3600)
var seconds = 10050;
strftime((seconds >= 3600 ? '%H:%M:%S' : '%M:%S'), new Date(0,0,0,0,0,seconds));
=> "02:47:30"
Y, por supuesto, puede simplemente pasar el formato que desee a medio tiempo si desea que la cadena de tiempo sea más o menos semántica.
var format = 'Honey, you said you\'d be read in %S seconds %M minutes ago!';
strftime(format, new Date(0,0,0,0,0,1210));
=> "Honey, you said you'd be read in 10 seconds 20 minutes ago!"
Espero que esto ayude.