strftime.js ( strftime github ) - одна из лучших библиотек форматирования времени. Это очень легкий - 30 КБ - и эффективный. Используя его, вы можете легко конвертировать секунды в время в одной строке кода, полагаясь главным образом на собственный класс Date.
При создании новой даты каждый необязательный аргумент позиционируется следующим образом:
new Date(year, month, day, hours, minutes, seconds, milliseconds);
Поэтому, если вы инициализируете новую дату со всеми аргументами от нуля до секунд, вы получите:
var seconds = 150;
var date = new Date(0,0,0,0,0,seconds);
=> Sun Dec 31 1899 00:02:30 GMT-0500 (EST)
Вы можете видеть, что 150 секунд - это 2 минуты и 30 секунд, как видно из даты создания. Затем, используя формат strftime («% M:% S» для «MM: SS»), он выведет строку минут.
var mm_ss_str = strftime("%M:%S", date);
=> "02:30"
В одной строке это будет выглядеть так:
var mm_ss_str = strftime('%M:%S', new Date(0,0,0,0,0,seconds));
=> "02:30"
Плюс это позволит вам взаимозаменяемо поддерживать ЧЧ: ММ: СС и ММ: СС в зависимости от количества секунд. Например:
# 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"
И, конечно, вы можете просто передать любой формат, который вы хотите, в strftime, если вы хотите, чтобы строка времени была более или менее семантической.
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!"
Надеюсь это поможет.