strvince.js ( strWeather github ) - одна з найкращих бібліотек форматування часу. Він надзвичайно легкий - 30 Кб - та ефективний. Використовуючи його, ви можете легко перетворювати секунди в час в один рядок коду, здебільшого покладаючись на нативний клас дат.
Під час створення нової дати кожен необов'язковий аргумент позиціонується таким чином:
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 секунд, як показано у створеній даті. Тоді, використовуючи формат стрипінгу ("% 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"
Плюс це дозволить вам взаємозамінна підтримка HH: MM: SS та MM: SS залежно від кількості секунд. Наприклад:
# 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"
І звичайно, ви можете просто передати будь-який формат, який ви хочете прострочити, якщо хочете, щоб часовий рядок був більш-менш семантичним.
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!"
Сподіваюся, це допомагає.