strftime.js ( strftime github ) to jedna z najlepszych bibliotek formatujących czas. Jest niezwykle lekki - 30 KB - i skuteczny. Używając go, możesz łatwo przekształcić sekundy w czas w jednej linii kodu, opierając się głównie na natywnej klasie Date.
Podczas tworzenia nowej daty każdy opcjonalny argument jest pozycyjny w następujący sposób:
new Date(year, month, day, hours, minutes, seconds, milliseconds);
Więc jeśli zainicjujesz nową datę ze wszystkimi argumentami równymi zero do sekund, otrzymasz:
var seconds = 150;
var date = new Date(0,0,0,0,0,seconds);
=> Sun Dec 31 1899 00:02:30 GMT-0500 (EST)
Możesz zobaczyć, że 150 sekund to 2 minuty i 30 sekund, jak widać w utworzonej dacie. Następnie używając formatu strftime („% M:% S” zamiast „MM: SS”), wyświetli ciąg minut.
var mm_ss_str = strftime("%M:%S", date);
=> "02:30"
W jednej linii wyglądałoby to tak:
var mm_ss_str = strftime('%M:%S', new Date(0,0,0,0,0,seconds));
=> "02:30"
Dodatkowo umożliwiłoby to wymienną obsługę HH: MM: SS i MM: SS w oparciu o liczbę sekund. Na przykład:
# 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"
Oczywiście możesz po prostu przekazać dowolny format do strftime, jeśli chcesz, aby ciąg czasu był mniej lub bardziej semantyczny.
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!"
Mam nadzieję że to pomoże.