J'ai pris un élan basé sur la réponse de @Royi :
/**
* Translates seconds into human readable format of seconds, minutes, hours, days, and years
*
* @param {number} seconds The number of seconds to be processed
* @return {string} The phrase describing the amount of time
*/
function forHumans ( seconds ) {
var levels = [
[Math.floor(seconds / 31536000), 'years'],
[Math.floor((seconds % 31536000) / 86400), 'days'],
[Math.floor(((seconds % 31536000) % 86400) / 3600), 'hours'],
[Math.floor((((seconds % 31536000) % 86400) % 3600) / 60), 'minutes'],
[(((seconds % 31536000) % 86400) % 3600) % 60, 'seconds'],
];
var returntext = '';
for (var i = 0, max = levels.length; i < max; i++) {
if ( levels[i][0] === 0 ) continue;
returntext += ' ' + levels[i][0] + ' ' + (levels[i][0] === 1 ? levels[i][1].substr(0, levels[i][1].length-1): levels[i][1]);
};
return returntext.trim();
}
Ce qui est bien avec le mien, c'est qu'il n'y a pas de répétitions. if
et ne vous donnera pas 0 année 0 jour 30 minutes 1 seconde par exemple.
Par exemple :
forHumans(60)
sorties 1 minute
forHumans(3600)
sorties 1 hour
y forHumans(13559879)
sorties 156 days 22 hours 37 minutes 59 seconds
3 votes
Duplicata possible de Comment convertir les millisecondes en une forme lisible par l'homme ?
0 votes
Oui et non, je pensais qu'il y avait une bonne solution JavaScript pour cela...
0 votes
Seconds est une forme lisible par l'homme.
3 votes
Eh bien, "213123 secondes" n'est pas très lisible. Vous pouvez proposer un meilleur titre