Prendendo in prestito la maggior parte della risposta di Guffa, questo dovrebbe fare il trucco come un plugin jQuery:
jQuery.fn.time_from_seconds = function() {
return this.each(function() {
var t = parseInt($(this).text(), 10);
$(this).data('original', t);
var h = Math.floor(t/3600);
t %= 3600;
var m = Math.floor(t/60);
var s = Math.floor(t % 60);
$(this).text((h > 0 ? h + ' hour' + ((h > 1) ? 's ' : ' ') : '') +
(m > 0 ? m + ' minute' + ((m > 1) ? 's ' : ' ') : '') +
s + ' second' + ((s > 1) ? 's' : ''));
});
};
Se si dispone di HTML in questo modo:
<span class='time'>67</span>
<span class='time'>953</span>
<span class='time'>3869</span>
E si chiama in questo modo:
$('.time').time_from_seconds();
Il codice HTML è rivolta a:
<span class="time">1 minute 7 seconds</span>
<span class="time">15 minutes 53 seconds</span>
<span class="time">1 hour 4 minutes 29 seconds</span>
Ogni elemento ha anche un data attribute di 'originale' con i secondi che originariamente conteneva.
La mia risposta risponde direttamente alla tua domanda, ma ho intenzione di fare un salto nel buio: se si desidera mostrare quanto tempo fa è successo qualcosa nel tempo umano (cioè, "5 minuti fa") c'è il jQuery timeago plugin per questo. Non penso che accetti secondi come formato, però. Deve essere una data ISO 8601.
fonte
2009-05-04 05:54:29
Penso che questo è più di un Domanda JavaScript oltre a una domanda jQuery. Quello che stai chiedendo è davvero fuori dalla portata di ciò che jQuery è per ... –
Probabilmente hai ragione, ma ho pensato di renderlo correlato a jquery nel caso di un plugin disponibile ... Sto iniziando a codificare qualcosa ora, ma sono sicuro che questo codice sia disponibile da qualche parte ... – farinspace
In realtà, se ricordo che c'era un post sul blog di SO ho generato i suoi timestamp in modo "umano-amichevole" ... Pensavo che ci fosse del codice sorgente che sarebbe utile lì ma non riesco a trovarlo ora. –