/
alexxhub
/
playerjs
Обзор
Документация
Войти
/
alexxhub
/
playerjs
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
1
CI/CD
Аналитика
Безопасность
patch
src/js/format.js
58 строк
1 KB
apavlov3rednet
doca
02 фев 2026, 20:44
02 фев 2026, 20:44
1368ae9
Код
Авторство
О чём код?
// format.js /** * format time * @param seconds * @returns {string} * @example formatTime(100) // 1:40 */ export function formatTime(seconds) { if (!Number.isFinite(seconds)) return "0:00"; const s = Math.floor(seconds % 60) .toString() .padStart(2, "0"); const m = Math.floor(seconds / 60); return `${m}:${s}`; } /** * parse time from param * @param value * @returns {number|null} * @example parseTimeFromParam("1h2m3s") // 3723 * @example parseTimeFromParam("1:30") // 90 * @example parseTimeFromParam("90") // 90 */ export function parseTimeFromParam(value) { if (!value) return null; // 90 if (/^\d+$/.test(value)) { return Number(value); } // 1h2m3s / 2m10s / 45s const re = /(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?/i; const match = value.match(re); if (match) { const h = Number(match[1] || 0); const m = Number(match[2] || 0); const s = Number(match[3] || 0); if (h || m || s) return h * 3600 + m * 60 + s; } // 01:02:03 или 01:30 if (value.includes(":")) { const parts = value.split(":").map(Number); if (parts.some(Number.isNaN)) return null; if (parts.length === 3) { const [h, m, s] = parts; return h * 3600 + m * 60 + s; } if (parts.length === 2) { const [m, s] = parts; return m * 60 + s; } } return null; }