Преобразование секунд в формат времени HH:MM:SS в JavaScript
Быстрый ответ
Желаете изменить количество секунд на часы, минуты и секунды? Воспользуйтесь этой компактной функцией на JavaScript:
function toHHMMSS(secs) {
const pad = val => ('0' + val).slice(-2);
return [Math.floor(secs / 3600), Math.floor((secs % 3600) / 60), secs % 60]
.map(pad)
.join(':');
}
console.log(toHHMMSS(3665)); // Выводит "01:01:05". Время преобразовано верно!
Функция toHHMMSS
позволит вам быстро произвести конвертацию времени. Просто передайте количество секунд, чтобы получить результат в формате ЧЧ:ММ:СС.
Обработка исключений: Отрицательные значения и не числовой ввод
В мире программирования отрицательные и не числовые значения встречаются так же часто, как куки в браузерах. Обрабатываем аномальный ввод следующим образом:
function toHHMMSS(secs) {
if (typeof secs !== 'number' || isNaN(secs)) {
throw new Error('Ожидалось число, а получено что-то иное.');
}
if (secs < 0) {
throw new Error('Отрицательные секунды? Мы ведь не можем вернуть время назад.');
}
// Продолжаем преобразование...
}
Такая проверка защищает функцию от ошибок, вызванных некорректным вводом данных. Помните, что правильная обработка исключений — это профилактика от возникновения багов.
Для любителей оптимизации: Производительность с минимализмом
Мы ценим эффективность, и иногда это означает отказ от использования Date
в пользу чистого JavaScript. Если вы тоже нацелены на скорость, вот оптимальное решение:
function toHHMMSS(secs) {
const pad = val => String(val).padStart(2, '0');
return [Math.floor(secs / 3600), Math.floor((secs % 3600) / 60), secs % 60]
.map(pad)
.join(':');
}
console.log(toHHMMSS(7265)); // И снова "02:01:05". Работает на скорость света!
Эта функция не использует объект Date
и работает быстрее благодаря базовым математическим операциям. Простота и прозрачность на благо производительности.
Расширенные возможности с помощью Moment.js
Для работы со временем свыше 24 часов или сложных расчетов времени может понадобиться библиотека Moment.js:
function toHHMMSS(secs) {
return moment.utc(secs * 1000).format('HH:mm:ss');
}
console.log(toHHMMSS(90000)); // Выведет "25:00:00". Мы увеличили продолжительность суток!
Moment.js предлагает дополнительные функции, однако будьте внимательны к производительности при подключении сторонних библиотек. Иногда достаточно мотоцикла, а не грузовика.
Визуализация
Представим цифровой секундомер. Мы устанавливаем на нем время, полученное после конвертации.
Входящее количество секунд: 7265
Процесс преобразования в формате секундомера:
🔢 => 🕒 (⏱️ 7265 сек)
Часы (ЧЧ): `7265 / 3600` => `2 ч` (⏱️ теперь показывает 02:--)
Минуты (ММ): `(7265 % 3600) / 60` => `1 мин` (⏱️ теперь показывает 02:01--)
Секунды (СС): `(7265 % 60)` => `5 сек` (⏱️ теперь показывает 02:01:05)
Показатель на секундомере: 02:01:05
Понимание преобразования секунд в формат ЧЧ:ММ:СС схоже с настройкой цифрового секундомера.
Удобство синтаксиса с использованием стрелочных функций и деструкции массивов
Стрелочные функции делают код более лаконичным и чистым. Используем их так:
const toHHMMSS = secs => {
const [hh, mm, ss] = [3600, 60, 1].map(unit => String(Math.floor(secs / unit % 60)).padStart(2, '0'));
return [hh.trim(), mm, ss].join(':');
};
console.log(toHHMMSS(7265)); // "02:01:05". Элегантно, как спокойное воскресное утро.
Такой код выглядит элегантно и аккуратно, соответствуя современным стандартам написания кода JavaScript.
Проверка данных: Принимаем только валидные входные данные
Часто при создании функций нужно обратить внимание на проверку входных данных:
function toHHMMSS(secs) {
const seconds = parseInt(secs, 10);
if (isNaN(seconds)) {
throw new TypeError('Ожидали целое число, а получили что-то иное.');
}
// Переходим к конвертации времени...
}
Проверка данных и преобразование типа данных через parseInt
увеличивают надежность функции и защищают от некорректных вводных данных.
Полезные материалы
- Date.prototype.toLocaleTimeString() – JavaScript | MDN — детальное руководство по методу
toLocaleTimeString()
. - JavaScript seconds to time string with format hh:mm:ss – Stack Overflow — обсуждения и ответы на Stack Overflow.
- Javascript – Seconds to Time (hh:mm:ss,ms) -> sec2time(593.685038) becomes 00:09:53,685 · GitHub — полезный код для подобного конвертирования.
- Moment.js | Docs — официальная документация библиотеки Moment.js.
- Простой обратный таймер на JavaScript – YouTube — визуальное пособие по созданию обратного таймера.
- JavaScript Timing Events — об информации по временным событиям в JavaScript.
- Дуглас Крокфорд о JavaScript — лучшие практики применения JavaScript от эксперта в этой области.