strftime.js ( strftime github ) è una delle migliori librerie di formattazione del tempo. È estremamente leggero - 30 KB - ed efficace. Usandolo puoi convertire facilmente i secondi in tempo in una riga di codice, basandosi principalmente sulla classe Date nativa.
Quando si crea una nuova data, ogni argomento facoltativo è posizionale come segue:
new Date(year, month, day, hours, minutes, seconds, milliseconds);
Quindi se inizializzi una nuova data con tutti gli argomenti come zero fino ai secondi, otterrai:
var seconds = 150;
var date = new Date(0,0,0,0,0,seconds);
=> Sun Dec 31 1899 00:02:30 GMT-0500 (EST)
Puoi vedere che 150 secondi sono 2 minuti e 30 secondi, come si vede nella data di creazione. Quindi, utilizzando un formato strftime ("% M:% S" per "MM: SS"), genererà la stringa dei tuoi minuti.
var mm_ss_str = strftime("%M:%S", date);
=> "02:30"
In una riga, sarebbe simile a:
var mm_ss_str = strftime('%M:%S', new Date(0,0,0,0,0,seconds));
=> "02:30"
Inoltre, ciò consentirebbe di supportare intercambiabile HH: MM: SS e MM: SS in base al numero di secondi. Per esempio:
# 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, naturalmente, puoi semplicemente passare qualsiasi formato desideri estrapolare se vuoi che la stringa temporale sia più o meno semantica.
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!"
Spero che questo ti aiuti.