strftime.js ( strftime github ) est l'une des meilleures bibliothèques de formatage de temps. Il est extrêmement léger - 30 Ko - et efficace. En l'utilisant, vous pouvez facilement convertir des secondes en temps en une seule ligne de code, en vous appuyant principalement sur la classe Date native.
Lors de la création d'une nouvelle date, chaque argument facultatif est positionnel comme suit:
new Date(year, month, day, hours, minutes, seconds, milliseconds);
Donc, si vous initialisez une nouvelle date avec tous les arguments à zéro jusqu'aux secondes, vous obtiendrez:
var seconds = 150;
var date = new Date(0,0,0,0,0,seconds);
=> Sun Dec 31 1899 00:02:30 GMT-0500 (EST)
Vous pouvez voir que 150 secondes correspondent à 2 minutes et 30 secondes, comme le montre la date de création. Puis en utilisant un format strftime ("% M:% S" pour "MM: SS"), il affichera la chaîne de vos minutes.
var mm_ss_str = strftime("%M:%S", date);
=> "02:30"
En une seule ligne, cela ressemblerait à:
var mm_ss_str = strftime('%M:%S', new Date(0,0,0,0,0,seconds));
=> "02:30"
De plus, cela vous permettrait de prendre en charge interchangeables HH: MM: SS et MM: SS en fonction du nombre de secondes. Par exemple:
# 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"
Et bien sûr, vous pouvez simplement transmettre le format que vous souhaitez strftime si vous voulez que la chaîne de temps soit plus ou moins sémantique.
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!"
J'espère que cela t'aides.