Javascript секунд до минут и секунд

170

Это общая проблема, но я не уверен, как ее решить. Код ниже работает отлично.

var mind = time % (60 * 60);
var minutes = Math.floor(mind / 60);

var secd = mind % 60;
var seconds = Math.ceil(secd);

Однако, когда я получаю 1 час или 3600 секунд, он возвращает 0 минут и 0 секунд. Как я могу избежать этого, чтобы он возвращал все минуты?

Спасибо

Джеймс Мур
источник
Это потому, что когда время = 3600, 3600% 3600 всегда 0 ... так что все остальное будет 0 в соответствии с вашими расчетами.
MSI

Ответы:

338

Чтобы получить количество полных минут, разделите общее количество секунд на 60 (60 секунд / минута):

var minutes = Math.floor(time / 60);

И чтобы получить оставшиеся секунды, умножьте полные минуты на 60 и вычтите из общего количества секунд:

var seconds = time - minutes * 60;

Теперь, если вы также хотите получить полные часы, разделите общее количество секунд на 3600 (60 минут / час · 60 секунд / минут), а затем рассчитайте оставшиеся секунды:

var hours = Math.floor(time / 3600);
time = time - hours * 3600;

Затем вы рассчитываете полные минуты и оставшиеся секунды.

Бонус:

Используйте следующий код, чтобы красиво распечатать время (предложено Dru)

function str_pad_left(string,pad,length) {
    return (new Array(length+1).join(pad)+string).slice(-length);
}

var finalTime = str_pad_left(minutes,'0',2)+':'+str_pad_left(seconds,'0',2);
гумбо
источник
57
Немного чище получить оставшиеся секунды, выполнив 'var seconds = time% 60'.
Эдвард Д'Суза
11
@Radio добавить ведущие нули, используя function str_pad_left(string,pad,length){ return (new Array(length+1).join(pad)+string).slice(-length); } var finalTime = str_pad_left(minutes,'0',2)+':'+str_pad_left(seconds,'0',2);
Дрю
1
Это решение не будет работать для отрицательных значений time. Если вы, например, введете -1 секунду, вы получите -1 минуту и ​​59 секунд назад ...
Pylinux
5
Какой смысл иметь негатив time? Логически разница во времени всегда положительна
mcont
4
Вы можете использовать модуль, чтобы получить количество секунд, на мой взгляд, это более читабельно. var seconds = time % 60
JCM
106

Еще одно необычное решение:

function fancyTimeFormat(duration)
{   
    // Hours, minutes and seconds
    var hrs = ~~(duration / 3600);
    var mins = ~~((duration % 3600) / 60);
    var secs = ~~duration % 60;

    // Output like "1:01" or "4:03:59" or "123:03:59"
    var ret = "";

    if (hrs > 0) {
        ret += "" + hrs + ":" + (mins < 10 ? "0" : "");
    }

    ret += "" + mins + ":" + (secs < 10 ? "0" : "");
    ret += "" + secs;
    return ret;
}

~~это сокращение для Math.floor, см. эту ссылку для получения дополнительной информации

Попробуй онлайн

Вишал
источник
14
В чем смысл ~~?
mcont
9
Это основной сокращенный вариант Math.floor, см. Эту ссылку .
Lapin
Работает нормально ..... :) Вы можете округлить значение следующим образом: hrs = hrs.toFixed (0); mins = mins.toFixed (0); secs = secs.toFixed (0);
Абдул Халик
1
Спасибо за это решение! Я добавил time = math.round(time)в первую строку, чтобы дать мне округленные секунды.
Фотофло
Это более правильное решение. Как указано выше, решение с наибольшим количеством голосов на этой странице отображает 180 секунд как 2m60s.
SongBox
71

Для людей, которые надеются на быстрое простое и, следовательно, короткое решение для форматирования секунд в M:SS:

function fmtMSS(s){return(s-(s%=60))/60+(9<s?':':':0')+s}

сделано ..
Эта функция принимает либоNumber (предпочтительнее) или а String(2 «конверсионные штрафы» , которые вы можете сократить вдвое, предваряя +в аргументе вызова функции для sкак в: fmtMSS(+strSeconds)), представляющем целые положительные секунды в sкачестве аргумента.

Примеры:

fmtMSS(    0 );  //   0:00
fmtMSS(   '8');  //   0:08
fmtMSS(    9 );  //   0:09
fmtMSS(  '10');  //   0:10
fmtMSS(   59 );  //   0:59
fmtMSS( +'60');  //   1:00
fmtMSS(   69 );  //   1:09
fmtMSS( 3599 );  //  59:59
fmtMSS('3600');  //  60:00
fmtMSS('3661');  //  61:01
fmtMSS( 7425 );  // 123:45

Сломать:

function fmtMSS(s){   // accepts seconds as Number or String. Returns m:ss
  return( s -         // take value s and subtract (will try to convert String to Number)
          ( s %= 60 ) // the new value of s, now holding the remainder of s divided by 60 
                      // (will also try to convert String to Number)
        ) / 60 + (    // and divide the resulting Number by 60 
                      // (can never result in a fractional value = no need for rounding)
                      // to which we concatenate a String (converts the Number to String)
                      // who's reference is chosen by the conditional operator:
          9 < s       // if    seconds is larger than 9
          ? ':'       // then  we don't need to prepend a zero
          : ':0'      // else  we do need to prepend a zero
        ) + s ;       // and we add Number s to the string (converting it to String as well)
}

Примечание. Отрицательный диапазон можно добавить, добавив (0>s?(s=-s,'-'):'')+к возвращаемому выражению (на самом деле, также (0>s?(s=-s,'-'):0)+будет работать).

GitaarLAB
источник
Я бы предложил добавить Math.floor(s)в последнюю строку для более чистых результатов. Работает отлично в любом случае, спасибо!
Диего Фортес
@PossessWithin: Нет, вам НЕ следует «добавлять Math.floor (s) к последней строке» (фрагмента разбивки) по нескольким причинам, прежде всего потому, что это может привести к ошибке для значений между 9и 10без дальнейших изменений; например, если вы ввели, 69.25то вывод будет 1:9вместо 1:09! Эта функция (для которой я явно указал целочисленные секунды) предназначена и с любовью создана как хрустящий инструмент / «двигатель» с высокими характеристиками (не для игры в ниндзя), и поэтому я считаю, что это неуместно обременять этот двигатель ненужной проверкой / очистка / фильтрация ...
GitaarLAB
... работа (например NaN, +/-Infinityи т. д.) и параметры округления, которые должны быть выполнены программистом перед вызовом функции, исходя из конкретных потребностей и возможных входных значений, с которыми может столкнуться приложение! Естественно, вы можете вносить исправления, если ваши доменные знания об ожидаемых входных значениях диктуют, что ваш конкретный вариант использования почти всегда получает значения с плавающей запятой, а тестирование производительности показывает, что ваше приложение. В вашем случае, когда вы хотите использовать только положительные значения, вы ДОЛЖНЫ ....
GitaarLAB
... изменить , (9<s?':':':0')чтобы (10>s?':0':':')(добавляя 1 символ , но «жертвуя» 5 из 6 истинного пути к ложным-путей) ИЛИ (10<=s?':':':0')(добавление 2 символов , но поддержание 5 из 6 истинных путей). Тогда я советую изменить этот последний трейлинг +sна +(s|0) вместо того Math.floor(s) , чтобы не разрушать всю прелесть отсутствия необходимости решать и вызывать Math.floor , все еще работая корректно во всем 53-битном +/-MAX_SAFE_INTEGERдиапазоне вместо «всего лишь» 32-битного (без знака) или 31-битного (со знаком) диапазона! Обратите внимание, что ABS(s)магнетуд гарантированно будет меньше 60, так что подписано ...
GitaarLAB
... подписано побитовое ИЛИ безопасно. Также обратите внимание, что эта конкретная модификация без указания оставшихся секунд заставит функцию выводить дробные секунды без конечных дробных нулей, но часто будет иметь более 3 значащих ненулевых дробных цифр, которые вам, вероятно, также придется обрабатывать. Наконец, в сочетании с необязательным кодом предварительной фиксации для отрицательного диапазона, эта конкретная модификация будет эффективно TRUNCate секунд (не FLOORing их). PS: PFFT, whoever came up with just 512 char limit for any meaningful comment should be...
GitaarLAB
21

Вы также можете использовать собственный объект Date:

var date = new Date(null);
date.setSeconds(timeInSeconds);

// retrieve time ignoring the browser timezone - returns hh:mm:ss
var utc = date.toUTCString();
// negative start index in substr does not work in IE 8 and earlier
var time = utc.substr(utc.indexOf(':') - 2, 8)

// retrieve each value individually - returns h:m:s
var time = date.getUTCHours() + ':' + date.getUTCMinutes() + ':' +  date.getUTCSeconds();

// does not work in IE8 and below - returns hh:mm:ss
var time = date.toISOString().substr(11, 8);

// not recommended - only if seconds number includes timezone difference
var time = date.toTimeString().substr(0, 8);

Конечно, это решение работает только для timeInSeconds менее 24 часов;)

hamczu
источник
1
Не думал, что объект Date будет обрабатывать форматирование. Менее гибкий, но если вы хотите чч: мм: сс (или часть этого) это здорово
MartinAnsty
Я пробовал это с 25 секундами, и это возвратило 01:00:25, который равняется 1 часу и 25 секундам.
timstermatic
Да, вероятно из-за вашего часового пояса. Я обновил решение, чтобы справиться с этим делом.
Хамчу
dateтакже может быть построен какvar date = new Date(timeInSeconds * 1000)
Нуно Андре
20

2019 лучший вариант

Формат hh:mm:ss

console.log(display(60 * 60 * 2.5 + 25)) // 2.5 hours + 25 seconds

function display (seconds) {
  const format = val => `0${Math.floor(val)}`.slice(-2)
  const hours = seconds / 3600
  const minutes = (seconds % 3600) / 60

  return [hours, minutes, seconds % 60].map(format).join(':')
}

Илья Зеленько
источник
хммм, secondsэто постоянн. Вы не можете переназначить это.
Ронапельбаум
@ronapelbaum этот аргумент, а не постоянный, я не понимаю, что вы имеете в виду
Илья Зеленько
@ronapelbaum, если вы назначаете секунды вместо того, чтобы получать их в качестве параметра, который вы должны использовать let, например function display (state) { let seconds = state.seconds; ... }, возможно, это было причиной вашей ошибки?
retrovertigo
Функциональный параметр должен рассматриваться как постоянный. При использовании %=вы переназначаете этот параметр. Просто используйтеseconds%60
Ronapelbaum
16
function secondsToMinutes(time){
    return Math.floor(time / 60)+':'+Math.floor(time % 60);
}
El0din
источник
3
Это может быть улучшено с нулями секунды: function secondsToMinutes(time){ return Math.floor(0 / 60)+':'+('0'+Math.floor(0 % 60)).slice(-2); }
Кус
отлично! спасибо @Kus. Просто вы можете заменить эти два 0с time, я прав?
Майки
2
@mikey упс! Да,function secondsToMinutes(time){ return Math.floor(time / 60) + ':' + ('0' + Math.floor(time % 60)).slice(-2) }
Кус
12

Чтобы добавить ведущие нули, я бы просто сделал:

var minutes = "0" + Math.floor(time / 60);
var seconds = "0" + (time - minutes * 60);
return minutes.substr(-2) + ":" + seconds.substr(-2);

Хороший и короткий

Идс Клинсма
источник
9

Очистите один лайнер, используя ES6


const secondsToMinutes = seconds => Math.floor(seconds / 60) + ':' + ('0' + Math.floor(seconds % 60)).slice(-2);
Сэм Логан
источник
6

Один лайнер (не работает с часами):

 function sectostr(time) {
    return ~~(time / 60) + ":" + (time % 60 < 10 ? "0" : "") + time % 60;
 }
Dillon
источник
4

Секунды до ч: мм: сс

var hours = Math.floor(time / 3600);
time -= hours * 3600;

var minutes = Math.floor(time / 60);
time -= minutes * 60;

var seconds = parseInt(time % 60, 10);

console.log(hours + ':' + (minutes < 10 ? '0' + minutes : minutes) + ':' + (seconds < 10 ? '0' + seconds : seconds));
kayz1
источник
Может ли кто-нибудь объяснить minutes < 10 ? '0' + minutes : minutesмне, предполагая только базовые знания JS?
Zediiiii
Если минуты состоят из одной цифры (<10), добавьте начальный ноль, иначе нет.
kayz1
Что помогает! Я не понял, что "?" был троичным оператором в JS.
Zediiiii
4

Следующая функция поможет вам получить дни, часы, минуты, секунды

toDDHHMMSS(inputSeconds){
        const Days = Math.floor( inputSeconds / (60 * 60 * 24) );
        const Hour = Math.floor((inputSeconds % (60 * 60 * 24)) / (60 * 60));
        const Minutes = Math.floor(((inputSeconds % (60 * 60 * 24)) % (60 * 60)) / 60 );
        const Seconds = Math.floor(((inputSeconds % (60 * 60 * 24)) % (60 * 60)) % 60 );
        let ddhhmmss  = '';
        if (Days > 0){
            ddhhmmss += Days + ' Day ';
        }
        if (Hour > 0){
            ddhhmmss += Hour + ' Hour ';
        }

        if (Minutes > 0){
            ddhhmmss += Minutes + ' Minutes ';
        }

        if (Seconds > 0){
            ddhhmmss += Seconds + ' Seconds ';
        }
        return ddhhmmss;
    }
alert( toDDHHMMSS(2000));
шивамани с
источник
Мне нравится этот. Я изменил, if (Days > 0){ ddhhmmss += Days + ' Day '; }чтобы if (Days > 0) {ddhhmmss += Days === 1 ? Days + ' Day ' : Days + ' Days '};сказать 1 Day, 2 Daysи 3 Daysт. Д. Подобное можно сделать для других.
Ste
4

После всего этого, еще одно простое решение:

const time = new Date(null);
time.setSeconds(7530);
console.log(time.getHours(), time.getMinutes(), time.getSeconds());
user2734839
источник
1
Использование time.setSeconds(1);возвращает, 1 0 1когда это должно быть 0 0 1.
Ste
3

Другое, но гораздо более элегантное решение для этого заключается в следующем:

/**
 * Convert number secs to display time
 *
 * 65 input becomes 01:05.
 *
 * @param Number inputSeconds Seconds input.
 */
export const toMMSS = inputSeconds => {
    const secs = parseInt( inputSeconds, 10 );
    let minutes = Math.floor( secs / 60 );
    let seconds = secs - minutes * 60;

    if ( 10 > minutes ) {
        minutes = '0' + minutes;
    }
    if ( 10 > seconds ) {
        seconds = '0' + seconds;
    }

    // Return display.
    return minutes + ':' + seconds;
};
Ахмад Авайс
источник
2

Для добавления нулей я действительно не вижу необходимости иметь полностью другую функцию, которую вы можете просто использовать, например,

var mins=Math.floor(StrTime/60);
var secs=StrTime-mins * 60;
var hrs=Math.floor(StrTime / 3600);
RoundTime.innerHTML=(hrs>9?hrs:"0"+hrs) + ":" + (mins>9?mins:"0"+mins) + ":" + (secs>9?secs:"0"+secs);

Именно поэтому у нас есть условные заявления в первую очередь.

(условие? если истина: если ложь), так что если количество секунд в примере больше 9, чем просто показывать секунды, иначе добавьте строку 0 перед ним.

судьба
источник
2

попробуйте это: преобразование секунд в часы, минуты и секунды.

function convertTime(sec) {
    var hours = Math.floor(sec/3600);
    (hours >= 1) ? sec = sec - (hours*3600) : hours = '00';
    var min = Math.floor(sec/60);
    (min >= 1) ? sec = sec - (min*60) : min = '00';
    (sec < 1) ? sec='00' : void 0;

    (min.toString().length == 1) ? min = '0'+min : void 0;    
    (sec.toString().length == 1) ? sec = '0'+sec : void 0;    

    return hours+':'+min+':'+sec;
}
Sushil
источник
2

var seconds = 60;
var measuredTime = new Date(null);
measuredTime.setSeconds(seconds); // specify value of SECONDS
var Time = measuredTime.toISOString().substr(11, 8);
document.getElementById("id1").value = Time;
<div class="form-group">
  <label for="course" class="col-md-4">Time</label>
  <div class="col-md-8">
    <input type="text" class="form-control" id="id1" name="field">Min
  </div>
</div>

Анмол Девта
источник
2

Если вы используете Moment.js, то вы можете использовать там встроенный Durationобъект

const duration = moment.duration(4825, 'seconds');

const h = duration.hours(); // 1
const m = duration.minutes(); // 20
const s = duration.seconds(); // 25
Джил Эпштейн
источник
2

ОБНОВЛЕНИЕ 2020

Используя базовую математику и простой javascript, это можно сделать всего за несколько строк кода.

ПРИМЕР - конвертировать 7735 secondsв HH:MM:SS.


МАТЕМАТИКА:

Расчеты используют:

  1. Math.floor()- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/floor

Math.floor()Функция возвращает наибольшее целое число меньше или равно заданному числу.

  1. %арифметический оператор (Remainder) - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Remainder

Оператор остаток возвращает остаток, оставшийся, когда один операнд делится на второй операнд. Это всегда принимает знак дивиденда.

Проверьте код ниже. Секунды делятся 3600на количество часов и остаток, который используется для вычисления количества минут и секунд.

HOURS => 7735 / 3600 = 2 remainder 535

MINUTES => 535 / 60 = 8 remainder 55

SECONDS => 55


ВЕДУЩИЕ НУЛИ:

Многие ответы здесь используют сложные методы , чтобы показать количество часов, минут и секунд надлежащим образом с ведущим нулем - 45, и 04т.д. Это может быть сделано с помощью padStart(). Это работает для строк, поэтому число должно быть преобразовано в строку с помощью toString().

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart

padStart()Метод колодка текущей строки с другой строкой (несколько раз, если это необходимо) , пока полученная строка не достигнет заданной длиной. Заполнение применяется с начала текущей строки.


КОД:

function secondsToTime(e){
    var h = Math.floor(e / 3600).toString().padStart(2,'0'),
        m = Math.floor(e % 3600 / 60).toString().padStart(2,'0'),
        s = Math.floor(e % 60).toString().padStart(2,'0');
    
    return h + ':' + m + ':' + s;
}

console.log(secondsToTime(7735));  //02:08:55

/*
secondsToTime(SECONDS) => HH:MM:SS 

secondsToTime(8)       => 00:00:08 
secondsToTime(68)      => 00:01:08
secondsToTime(1768)    => 00:29:28
secondsToTime(3600)    => 01:00:00
secondsToTime(5296)    => 01:28:16
secondsToTime(7735)    => 02:08:55
secondsToTime(45296)   => 12:34:56
secondsToTime(145296)  => 40:21:36
secondsToTime(1145296) => 318:08:16
*/

Якуб Муда
источник
1

Вы сделали достаточно кода для отслеживания минут и секунд.

Что вы можете сделать, это добавить фактор часов в:

var hrd = time % (60 * 60 * 60);
var hours = Math.floor(hrd / 60);

var mind = hrd % 60;
var minutes = Math.floor(mind / 60);

var secd = mind % 60;
var seconds = Math.ceil(secd);

var moreminutes = minutes + hours * 60

Это даст вам то, что вам нужно.

Nevyn
источник
Я попробовал это, используя «время» как секунды, и это не сработало. Например, 975 секунд означает, что hrd = 975, что означает, что часы - 16.
Spedge
1

Я думал о более быстром способе сделать это, и это то, что я придумал

var sec = parseInt(time);
var min=0;
while(sec>59){ sec-=60; min++;}

Если мы хотим преобразовать «время» в минуты и секунды, например:

// time = 75,3 sec
var sec = parseInt(time); //sec = 75
var min=0;
while(sec>59){ sec-=60; min++;} //sec = 15; min = 1
Камень Коцев
источник
1

Поместите мои два цента в:

function convertSecondsToMinutesAndSeconds(seconds){
            var minutes;
            var seconds;
            minutes = Math.floor(seconds/60);
            seconds = seconds%60;

            return [minutes, seconds];
        }

Итак, это:

var minutesAndSeconds = convertSecondsToMinutesAndSeconds(101);

Будет иметь следующий вывод:

[1,41];

Тогда вы можете напечатать это так:

console.log('TIME : ' +  minutesSeconds[0] + ' minutes, ' + minutesSeconds[1] + ' seconds');

//TIME : 1 minutes, 41 seconds
thatOneGuy
источник
1

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!"

Надеюсь это поможет.

Себастьян Шолль
источник
1
export function TrainingTime(props) {
    const {train_time } = props;
    const hours = Math.floor(train_time/3600);
    const minutes = Math.floor((train_time-hours * 3600) / 60);
    const seconds = Math.floor((train_time%60));

    return `${hours} hrs  ${minutes} min  ${seconds} sec`;
}
Абдул Рехман
источник
2
Добро пожаловать в переполнение стека. Как подсказывает @PhilRoggenbuck, объяснение поможет. Для получения дополнительной информации читайте stackoverflow.com/help/how-to-answer
Миккель
0

Я предлагаю другое решение:

function formatTime(nbSeconds, hasHours) {
    var time = [],
        s = 1;
    var calc = nbSeconds;

    if (hasHours) {
        s = 3600;
        calc = calc / s;
        time.push(format(Math.floor(calc)));//hour
    }

    calc = ((calc - (time[time.length-1] || 0)) * s) / 60;
    time.push(format(Math.floor(calc)));//minute

    calc = (calc - (time[time.length-1])) * 60;
    time.push(format(Math.round(calc)));//second


    function format(n) {//it makes "0X"/"00"/"XX"
        return (("" + n) / 10).toFixed(1).replace(".", "");
    }

    //if (!hasHours) time.shift();//you can set only "min: sec"

    return time.join(":");
};
console.log(formatTime(3500));//58:20
console.log(formatTime(305));//05:05
console.log(formatTime(75609, true));//21:00:09
console.log(formatTime(0, true));//00:00:00

Шерали Турдиев
источник
0

Я знаю, что это было решено многими способами. Мне нужна была эта функция для скрипта After Effects, где скорость или загрязнение пространства имен не являются проблемой. Я бросаю это здесь для кого-то, кому нужно нечто подобное. Я также написал несколько тестов и работал нормально. Итак, вот код:

Number.prototype.asTime = function () {
    var hour = Math.floor(this / 3600),
        min = Math.floor((this - hour * 3600) / 60),
        sec = this - hour * 3600 - min * 60,
        hourStr, minStr, secStr;
    if(hour){
        hourStr = hour.toString(),
        minStr = min < 9 ? "0" + min.toString() : min.toString();
        secStr = sec < 9 ? "0" + sec.toString() : sec.toString();
        return hourStr + ":" + minStr + ":" + secStr + "hrs";
    }
    if(min){
        minStr = min.toString();
        secStr = sec < 9 ? "0" + sec.toString() : sec.toString();
        return  minStr + ":" + secStr + "min";
    }
    return sec.toString() + "sec";
}
vladblindu
источник