You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

46 lines
1.5 KiB

/**
* Преобразует секунды в формат "дни ЧЧ:ММ:СС" (если дни > 0)
* или просто "ЧЧ:ММ:СС" (если дней нет).
* @param {number} totalSeconds - количество секунд (целое неотрицательное число)
* @returns {string} отформатированная строка
*/
function formatSeconds(totalSeconds) {
if (totalSeconds < 0) return "0 00:00:00";
const days = Math.floor(totalSeconds / 86400);
let remainder = totalSeconds % 86400;
const hours = Math.floor(remainder / 3600);
remainder %= 3600;
const minutes = Math.floor(remainder / 60);
const seconds = remainder % 60;
// Форматируем часы, минуты, секунды с ведущими нулями
const timePart = `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
if (days === 0) {
return timePart;
}
// Склонение слова "день"
let dayWord;
const lastDigit = days % 10;
const lastTwoDigits = days % 100;
if (lastTwoDigits >= 11 && lastTwoDigits <= 14) {
dayWord = "д";
} else {
switch (lastDigit) {
case 1: dayWord = "д"; break;
case 2:
case 3:
case 4: dayWord = "д"; break;
default: dayWord = "д";
}
}
return `${days} ${dayWord} ${timePart}`;
}
module.exports = {formatSeconds}