O strftime.js ( strftime github ) é uma das melhores bibliotecas de formatação de horário. É extremamente leve - 30KB - e eficaz. Com ele, você pode converter segundos em tempo facilmente em uma linha de código, contando principalmente com a classe Date nativa.
Ao criar uma nova data, cada argumento opcional é posicional da seguinte maneira:
new Date(year, month, day, hours, minutes, seconds, milliseconds);
Portanto, se você inicializar uma nova data com todos os argumentos como zero até os segundos, receberá:
var seconds = 150;
var date = new Date(0,0,0,0,0,seconds);
=> Sun Dec 31 1899 00:02:30 GMT-0500 (EST)
Você pode ver que 150 segundos são 2 minutos e 30 segundos, como visto na data criada. Em seguida, usando um formato strftime ("% M:% S" para "MM: SS"), ele exibirá a sequência de minutos.
var mm_ss_str = strftime("%M:%S", date);
=> "02:30"
Em uma linha, seria semelhante a:
var mm_ss_str = strftime('%M:%S', new Date(0,0,0,0,0,seconds));
=> "02:30"
Além disso, isso permitiria o suporte intercambiável HH: MM: SS e MM: SS com base no número de segundos. Por exemplo:
# 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"
E, é claro, você pode simplesmente passar o formato que desejar durante o tempo, se quiser que a seqüência de tempo seja mais ou 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 isto ajude.